Feature: auto-expanding parens

When brackets are now typed, they come with a matching "ghost" bracket
at the far end of the current block. This is done by auto-expanding to
contain the rest of current block and being set to a "one-sided" state.

Then, typing a matching bracket facing the opposite way in a one-sided
bracket "closes" the matching bracket pair around anything between them.
This is done by moving everything up til the ghost outside the bracket
pair and "solidifying" the ghost.

Fixes the main usability problem with, and hence supersedes, #260
"Feature: HalfBracket's", where partially-typed expressions were often
malformed because there was no opposing bracket (here there's always
at least an opposing ghost).