Replace cur with longest pre before trimming comps.

This ensures that shared prefix stripping doesn't choke if the completer
completely changed what we were completing (which happens when the file
completer sees a ~ and drops everything and starts completing from the user's
home directory).
If scrollLeft or top gets too high, reel it in.
Completer improvements.

- Moved commit logic into Completer so that it can be overridden if desired.
- Modified longestPrefix to better handle loose-case completing.
Nixed stale reference to spray.
Nix superfluous Syntax types.

We're not likely to use the SyntaxTable approach for anything other than word
and whitespace calculations. Instead we'll either use TextMate grammar spans,
or real ASTs from real parsers. If we do, I'll rethink.
Test fixes.
Great big edit event revamp.

- We no longer emit separate buffer edited and line edited events.

- Now the buffer emits events based on regions (i.e. [start,end)). Instead of
  one event, we have Insert, Delete and Transform. Insertion and deletion are
  no longer combined together because that rarely happened in practice and I'd
  rather not foist complex logic onto every client in the universe. Transform
  is a special case where no characters are inserted or deleted, they're just
  changed (i.e. upcased or something like that).

- The one place where a line based view of the world is preferable to a region
  based view of the world (i.e. BufferViewImpl) handles region-based events and
  re-emits line-based events for those clients that care (i.e. BufferArea).
Cope with (ignore) past-eol style requests.
Added Blocker for matching braces.

CodeMode wires this up to automatically highlight the braces that enclose the
tighest block around the point. I'll probably add a config to allow this to be
turned off, or only active when the point is on a brace, or blinked on request,
for people who don't like such enthusiastic block information.