Revamped Line.Tag mechanism.

It's now more efficient, supports clearing tags manually & auto-clearing tags
on line edit, and matches tags based on a customizable key. This latter means
one is not confined to a single concrete class for a particular tag.
Omit Config.Defs.global; added some Java helpers.

Scala helpfully erases generics to Object when instantiated as primitives,
instead of to their corresponding box type. This makes them effectively
unusable for Java. Yay. So we introduce bindings directly to the Java box
types, which can be used from Java without major pain. And naturally in this
case by Java, I mean any JVM language that is not Scala.
Allow this annotation on fields as well.
Revamped Indenter system.

Instead of relying on a bunch of ad-hoc regexp matching and searching around
the buffer, we do a simple form of parsing and assign indentation states to
each line of the buffer. The combination of the current indentation state and
the contents of a line should be enough to compute a line's indentation.

If information is needed from elsewhere in the buffer to determine the correct
indentation for a given line, it needs to be encoded into the indentation state
and calculated along with the rest.

This makes some things a little fiddlier, but massively simplifies a bunch of
other stuff.