WIP: OptionConfig extraction
Extract view object for first option

There was previously a lot of duplicated code in the partials for each
of the options. This commit introduces a way of extracting just the data
specific to each option into a class so the same partial can be used for
all options.
Return class, not instance, from OptionManager

The label, doc url, etc. values won't change for each class so they
might as well be class methods.

The `#form_fields` method relies on view helpers included in the class
so it is easier if it stays an instance method and we just make a class
method to wrap it.
Extract class for creating form fields

This reduces the responsibilities of the original Option::Compatible
class and extracts behavior that could be useful in other cases (e.g.
expandtab option).

Now that the Option::Compatible class only contains configuration data
instead of behavior, it can be easily extracted into a configuration
file.
Remove unnecessary dependency injection

In order to keep this test fast, we weren't loading the OptionSet model
(since it inherits from ActiveRecord::Base and we don't want to load
Rails). Instead we were injecting the model class into the `#submit` as
an optional argument.

This seems clunky since only our tests use this argument and it makes
the implementation slightly more abstract.

This commit stubs the OptionSet class directly in the context of the
test so it no longer needs to be passed in.
Simplify OptionSetsController#create

There is no need for this local variable and putting it all on one line
does not seem more complex.
Reorder lines to keep attr_accessors together
Extract default values into config

Previously, when you generated a vimrc and then reloaded the page, the
values in the form would reset to the defaults (since we were setting
the values in the form helpers).

This commit not only fixes that issue, but extracts all of the default
values into the OptionConfig class.

This commit also converts keys that get stored as JSON to strings.
Add lib to autoload paths

I would prefer to require the files directly but autoloading them makes
development a little easier since they will be reloaded on every
request. I thought `require_dependency` would do that, but it apparently
does not.
Require dependencies in test rather than class

This won't be used outside of Rails so we only need to load these
dependencies in the tests.
Update spec for change in Controller
Extract Compatible option to config file

This commit extracts the data/behavior specific to the "compatible"
option into a config file. This can now replace the partial entirely for
the compatible option form fields.

This pattern should be repeatable for the other options and future
options. The goal is to make adding additional options require editing
as few files as necessary.
Remove unnecessary rubocop disable comments

This method used to be long but now it has been extracted
Bump Ruby version to 2.1.4
Merge branch 'extract_option'

This merges the extraction of the Option class that will provide a
uniform interface for representing individual options. This merge
includes the extraction for the first option: Compatible.

It currently only replaces the view partial that included the form
fields for the option. This means there are now three locations where the
Compatible option is defined: in the new `lib/options/config.yml` file,
in the `lib/vimrc_renderer/option_renderer/compatible.rb` class, and in
the `app/models/option_config.rb` class.

It is possible that these three locations could be further combined into
one location, making it easier to add/modify options by just having to
change them in one place. This is made possible by the uniformity of
many of the options (many of them are just `set` or `let`) so once more
unique options are added, this may prove less beneficial and be more
abstract than necessary.

But we'll keep going with it because it is interesting to see how much
duplication can be removed, and fun!
Disable Rails/Delegate cop for lib files

Delegate is not so useful that it justifies including the module in
non-Rails classes.
Fix indentation
Reformat/clarify tests for readability
Move Options::OptionRegistry into its own file

lib/options.rb was getting too large
Extract config path to constant