Remove blocks in parser

Previously the input was separated into blocks, this made for a simple
approach initially because we didn't have transactions but has proven to
be very inconvenient in experiments with additional elements.

This is a rewrite of the Parser in which the LineIterator is accessed
directly by all parse_* methods.