Implement bidirectional rule L1.4

For this, we first make use of our paragraph level slot in each
data point and store it for each. This way, even if the data
buffer is arbitrarily split up, we always know what the current
paragraph level is.

Secondly, we add the rule L1.4 itself, which is very similar to
the existing implementation of rules L1.1-L1.3.
1 file changed