Class Block

Set a new indent level for the enclosed matchers (typically BLine and
Block instances).

In the simplest case, this might increment the global indent by 4, say.
In a more complex case it might look at the current token, expecting an
Indent, and set the global indent at that amount if it is larger
than the current value.

A block will always match an Indent, but will not consume it
(it will remain in the stream after the block has finished).

The usual memoization of left recursive calls will not detect problems
with nested blocks (because the indentation changes), so instead we
track and block nested calls manually.

__init__(self,
*lines,
**kargs)(Constructor)

The policy is passed the current level and the indent and must
return a new level. Typically it is set globally by rewriting with
a default in the configuration. If it is given as an integer then
constant_indent is used to create a policy from that.

indent is the matcher used to match indents, and is exposed for
rewriting/extension (in other words, ignore it).