Add option scoping: local, global, default.

Global options are always set for all editors at the same time, even
when :setlocal is used.

Local options are always local, even when :set is used.

Default makes it depend on whenther :set or :setlocal was used.

Tests will use default value for local options.

Also make sure to call LocalConfigurationListeners when setlocal is
used.
Implement 'modifiable' for normal and visual mode.

TextContent implementations are wrapped with a decorator which monitors
the state of the 'modifiable' setting. If 'false', no replace or
inserts will be allowed, instead they will be silently ignored (similar
to what happens for Eclipse editors where isEditable() returns false).
Implement 'modifiable' for insert mode.

If modifiable is false, any keys other than navigation are suppressed,
making sure the user doesn't modify the buffer.
Warn user when trying to change unmodifiable file.

Print an error so it becomes clear that 'modifiable' is unset.
Move isEditable check, print error for changes.

This way, all changes will print an error 'file is not editable'.
Earlier, some commands simply went through (e.g. rt changing a
character) whereas others would silently refuse.
Implement 'syncmodifiable' flag.

When this flag is set (default), the 'modifiable' flag will be unset if
the editor reports that it's input file is readonly.

Fixes #339 for non-CDT editors.
Document 'modifiable' and 'syncmodifiable'

One is a setting taken from Vim, the other is a Vrapper compromise for
the lack of real autocmd and function support.
Merge pull request #414 from albertdev/modifiable-boolean-option

'modifiable' and 'syncmodifiable' boolean options