Add Config class for managing configuration

The first step in adding support to `scss-lint` to load per-file
configuration settings.

The pattern model follows the convention set by Rubocop for the most
part. A configuration file specifies the other configuration files it
inherits from, merging those configurations with each other, then
merging the result with the config file itself. Finally, all
configuration files are merged with the default configuration, which is
specified in `config/default.yml`.

This simplistic model allows complex configurations to be created by
placing individual `.scss-lint.yml` files in various directories, using
the nesting of directories to further refine/adjust configuration for
different parts of a codebase (each of the child configs would need to
specify the location of the parent config). An example configuration
would look like:

  # app/assets/stylesheets/.scss-lint.yml
  linters:
    BorderZero:
      enabled: false

  # app/assets/stylesheets/plugins/.scss-lint.yml
  inherit_from: ../.scss-lint.yml
  linters:
    BorderZero:
      enabled: true

The above example will disable the `BorderZero` linter in all
directories under `app/assets/stylesheets` except the `plugins`
directory.

This commit includes specs, the default configuration, and a standard
implementation supporting the merging algorithm for inheriting
configurations (piggybacking off of the `Hash#merge` method).

A follow-up commit will integrate this into the CLI so that file-based
configurations can actually be loaded.

Change-Id: I3e52fb563ef31737d6f22cf23f5be095981740cd
Reviewed-on: https://gerrit.causes.com/30919
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>