Two stage initialisation of `file_info`.

Not much point now, but I'm going to try to create `file_info` before
processing the docinfo block. Unfortunately this means that the members
of `file_info` are no longer const, but I didn't want to add extra
complexity to keep that.

Added some assertions to make sure methods aren't called before the
docinfo is processed. Will probably have to relax some of them.
Make two stage file intialisation public.
Start file before parsing the docinfo block.

Had to fiddle around a little with `compatibility_version`, it would be
pretty trivial to set it from the start of the file, but for now I want
to make sure my assumption that it's never used in the docinfo block is
correct, otherwise I might accidentaly introduce a breaking change.
Rewrite source mode tracking.

This models the source mode in some of the output state classes.
A bit more complicated but it improves the behaviour of tagged source mode
so it now works for lists, tagged sections and allows source mode
changes to persist outside of tagged elements.
Don't disable the newline after block handler in 1.7.

It isn't needed, although it does mean that this might be surprising:
{{{
* xxx xxx xxx
xxx xxx xxx
[block]
yyy yyy yyy
}}}

which is now equivalent to:

{{{
* xxx xxx xxx
  xxx xxx xxx

  [block]

yyy yyy yyy
}}}