Factor filesystem-dependent features out of MetadataSource for easy testing

The MetadataSource class was highly-dependent on the chef repo. This made it
particularlt hard to test without invasive stubbing or a large set of test
fixtures. I've moved these features into their own classes.

This commit contains breaking changes to the interface. I renamed these
exception classes for clarity:

  NoTemplateError    => MissingMetadataConfigError
  TemplateParseError => MetadataConfigParseError

I've verified, by inspection, that ec2admin is unaffected by this change.
Use a chef-style deep merge for default and override role attributes

This fixes Martin's original issue.
Don't use a deep merge for stemcell attributes, only roles.

Use standard merges so that the role metadata and override options can gain
effective control over the stemcell attributes. Defaults were meant to supply
unspecified options, not compose additively with the roles. Similarly, override
options (specified on the command line) should replace, not augment.
Remove the built-in deep merge implementation
Add Rspec to the Gemfile
Add specs for MetadataSource and supporting classes
Merge pull request #36 from airbnb/metadata-refactor-specs

Chef-like role metadata merge, clarify other merges, add specs