Add deep-merge feature to backend lookups

- Config option :merge_behavior => :native|:deep|:deeper
- Add optional requirement on deep_merge gem to support
  :deep and :deeper options
- Update Yaml backend to use Backend.merge_answer
- Update Json backend to use Backend.merge_answer
Allow both symbols and strings when deciding behavior of merge_answer
Add quantal to default cows list in build_defaults.
Remove fedora 15 mocks from default mocks in build_defaults.
Merge pull request #104 from haus/maint/1.x/update_build_defaults

Maint/1.x/update build defaults
(#17087) Fix backend key in hiera.yaml

Previously the hiera.yaml that is laid down in packaged installs used 'backend'
instead of 'backends' which means that hiera falls through to the default yaml
backend, as no 'backends' key exists in the config. This commit fixes the
hiera.yaml file to use 'backends' instead.
Merge pull request #105 from haus/ticket/1.x/17087_fixup_hiera_yaml

(#17087) Fix backend key in hiera.yaml
(maint) Handle lack of RSpec::Core::RakeTask gracefully

Having a hard dependency of RSpec to run rake tasks, specifically packaging
tasks, is unnecessary. This commit rescues any LoadError from loading rubygems
and rspec and also only presents the spec task if RSpec::Core::RakeTask is
defined/loaded.
Merge pull request #106 from haus/maint/1.x/make_rspec_optional

(maint) Handle lack of RSpec::Core::RakeTask gracefully
Spelling.
Update Hiera VERSION to 1.1.2-rc1
Merge branch '1.x'
(#18214) Update gem dependency to json_pure from json

As the json gem requires ruby-dev, gcc, and other tools to install via
rubygems, this commit changes the dependency to json_pure for gems, which will
lessen the dependencies required for install, as json_pure is pure ruby, with
no compilation required.
Merge pull request #107 from haus/ticket/1.x/18214_update_gem_depends_to_json_pure

(#18214) Update gem dependency to json_pure from json
Update Hiera VERSION to 1.1.2-rc2
Fix undefined method `[]' for nil:NilClass error in yaml_backend_spec.rb

Fix configuration assumptions in yaml backend tests

Without this patch applied the following spec tests are failing.  This
patch fixes the problem by making sure the configuration is initialized
to the default values before running the example group.

    $ rake test
    ............FF.F..................................................................................

    Failures:

      1) Hiera::Backend::Yaml_backend#lookup should ignore empty hash of data sources for hash searches
         Failure/Error: @backend.lookup("key", {}, nil, :hash).should == {"a" => "answer"}
         NoMethodError:
           undefined method `[]' for nil:NilClass
         # ./lib/hiera/config.rb:51:in `[]'
         # ./lib/hiera/backend.rb:153:in `merge_answer'
         # ./lib/hiera/backend/yaml_backend.rb:55:in `block in lookup'
         # ./lib/hiera/backend/yaml_backend.rb:16:in `lookup'
         # ./spec/unit/backend/yaml_backend_spec.rb:74:in `block (3 levels) in <module:Backend>'

      2) Hiera::Backend::Yaml_backend#lookup should build a merged hash of data sources for hash searches
         Failure/Error: @backend.lookup("key", {}, nil, :hash).should == {"a" => "answer", "b" => "answer"}
         NoMethodError:
           undefined method `[]' for nil:NilClass
         # ./lib/hiera/config.rb:51:in `[]'
         # ./lib/hiera/backend.rb:153:in `merge_answer'
         # ./lib/hiera/backend/yaml_backend.rb:55:in `block in lookup'
         # ./lib/hiera/backend/yaml_backend.rb:16:in `lookup'
         # ./spec/unit/backend/yaml_backend_spec.rb:85:in `block (3 levels) in <module:Backend>'

      3) Hiera::Backend::Yaml_backend#lookup should fail when trying to merge an Array
         Failure/Error: lambda {@backend.lookup("key", {}, nil, :hash)}.should raise_error(Exception, "Hiera type mismatch: expected Hash and got Array")
           expected Exception with "Hiera type mismatch: expected Hash and got Array", got #<NoMethodError: undefined method `[]' for nil:NilClass> with backtrace:
             # ./lib/hiera/config.rb:51:in `[]'
             # ./lib/hiera/backend.rb:153:in `merge_answer'
             # ./lib/hiera/backend/yaml_backend.rb:55:in `block in lookup'
             # ./lib/hiera/backend/yaml_backend.rb:16:in `lookup'
             # ./spec/unit/backend/yaml_backend_spec.rb:107:in `block (4 levels) in <module:Backend>'
             # ./spec/unit/backend/yaml_backend_spec.rb:107:in `block (3 levels) in <module:Backend>'
         # ./spec/unit/backend/yaml_backend_spec.rb:107:in `block (3 levels) in <module:Backend>'

    Finished in 0.08651 seconds
    98 examples, 3 failures
Merge branch 'justenwalker-master' (Pull Request 100)

https://github.com/puppetlabs/hiera/pull/100

* justenwalker-master:
  Fix undefined method `[]' for nil:NilClass error in yaml_backend_spec.rb
  Allow both symbols and strings when deciding behavior of merge_answer
  Add deep-merge feature to backend lookups
Update Hiera VERSION to 1.1.2
Merge branch '1.x'
(maint) Add Travis CI Support

This patch enables Travis CI support using the travis configuration.
Email notifications are turned off to reduce inbox clutter.

This patch should coincide with enabling Travis CI support for pull requests.
A build status image is also included in the project README.