Formatting options redesign

The previous design had some serious problems:

1. It was barely usable from Java (without named arguments);
2. Even with named arguments, gradually building up formatting options
   was a pain (and would construct a slow, deeply nested
   CombinedOptions); and
3. Everyone could create their own VariableOptions, potentially breaking
   the formatter (in general, formatting options should never change).

Now:

- VariableOptions is a subclass of SparseFormattingOptions, and shared.
  It can easily be used to construct formatting options from any
  language.
- FormattingOptions no longer declares its attributes ‘default’,
  protecting itself against changes.
- CombinedOptions is combinedOptions, a function that eagerly creates
  the combination FormattingOptions. (Future changes to the “decoration”
  sparse options have no effect.)

To turn VariableOptions into FormattingOptions, use the following idiom:

    combinedOptions(FormattingOptions(), variableOptions)

(possibly substituting ‘FormattingOptions()’ for other suitable base
options.)

CC ceylon/ceylon-ide-eclipse#987 and @akberc.