Improve docunits

This PR change a little the behavior of docunits.

First, blocks respect more the markdown specification where empty lines are authorized in code blocks

So this make a single code block and not two:

~~~~
# bla bla
#
#    var a = 1
#
#    assert a == 1
~~~~

Second, unitnit already allows combination of code block. a la literal programming.
It means that each code block is not compiled separately but regrouped to make a bigger program (to some extends).
This is mainly used to reuse local variables or to invoke defined methods.

~~~~
# A very complex example
#
#    var a = 1 + 1
#    assert a == 2
#
# But it is worse
#
#    var b = a + 1
#    assert b == 3
~~~~

The issue was that to be combined, a block has already to be a valid docunit, thus have a `assert` clause.
This constraint is removed, so the following docunit is now accepted

~~~~
#    var a = 1 + 1
#
# bla bla bla
#
#    assert a == 3
~~~~
Unnecessary `return`.