Defer rebuilding line views until visible.

This is a small step toward greatly improved performance.
Avoid highlighting single character matches.

It needlessly slows down the beginning of every search to highlight the zillion
instances of the first character and then unhighlight them as you add more
characters. If we eventually delay the display of non-active matches, this can
be removed, but I kind of prefer instant visualization of all matches.

I also added a count of the number of matches in the prompt when there are >0.
Comment color tweak.
Make our primary style operator a transform fn.

Everything else can be easily implemented atop that.
Added LineV.indexOf/lastIndexOf.
Make State implement Region.
Method order twiddling.
Beginnings of rudimentary indentation support.

We're already doing nearly as much as Sublime does, and more in some cases.
More useful completers.
Constrain the status label width.

It looks nicer if it's a smidge less wide than the main view. Yay for JavaFX's
reactive binding combinators.
Great big config revamp.

- configuration variables are now annotated with @Var
- wired up describe-variable and set-variable
- also threw in describe-fn for good measure

I'm not sure I'm happy with having the global config tacked onto the main
mode's configDefs chain. That makes global config vars appear to be config vars
of the major mode. In some cases that makes sense (e.g. kill-ring-size), and
maybe we want to allow a mode config to override global config vars, but in
other cases it's weird (e.g. view-width). I'll probably revamp this and just
handle globals specially, and keep them isolated from mode config vars.