A bunch more mode wiring and revampery.

- Major modes declare file name patterns, interpreter names, and "flavor" tags
  (for example "text", "code").

- The file name patterns and interpreter names are used to determine which
  major mode to use for a particular file.

- Minor modes declare a set of flavor tags for which they should be
  auto-activated. When a major mode is activated, all minor modes which match
  its flavor tags are activated.

This commit also introduces a Guava dependency and marks the beginning of the
gradual removal of Scala collections from the public API. They're impossible to
use outside Scala, and I'm serious about Scaled being comfortably extensible in
a wide variety of JVM languages.
Allow removing all styles that match a predicate.
Make LineV implement CharSequence.

Peskily this results in a name clash with the Java8 CharSequence extension
method chars, so we had to do some renaming.