Add form object for creating OptionSets

This refactor was prompted by noticing that the OptionSetPresenter seems
to just keep growing. Previously it had two responsibilities: 1) to
group the related options into nested hashes (e.g. backspace and list
related settings) as well as converting the formats from all strings to
their true form (e.g. 'true' and '1' to true). This commit breaks out
the first of those responsibilities into a form object.

Since we were using hstore to persist the settings, everything still has
to be a string until the very end when we pass it to the VimrcRenderer,
but grouping the related options could happen before the OptionSet is
saved to the database. This would also have the added benefit of looking
a little nicer (since settings like backspace_eol and backspace_start
are related but stored at the same level). However, this meant we could
no longer continue to use hstore since it does not support nested
hashes.

Fortunately, Postgres 9.4 introduces the jsonb type which stores JSON in
a binary format and doesn't incur the cost of reparsing on every change,
which is part of the reason hstore was chosen originally. This allows us
to persist nested hashes and organize our settings in a more meaningful
format. Now the backspace_eol and list_trail kind of attributes are only
needed on the form layer.

This also has the added benefit of moving the validations/attr_accessors
out of the model.

This clears the way for further refactoring of the presenter.