Support a new YAML format for template settings

This is the initial version of support for a YAML format settings file, to supersede ```cookiecutter.json```. Before committing, I would like to refactor this further, to make the "internal" format completely encapsulated in ```settings.py``` so that client code need have no knowledge of how the settings are stored. But the PR is sufficiently complete that it's ready for initial review.

At the moment, it's only the context data that is in the settings, so the refactoring won't actually impact much, but it establishes the principle that following changes should follow. The main change at this stage will be in the tests, which currently know far too much about how the settings/context is stored.
I think when this gets update with master (to resolve the conflicts) this method can accept the `extra_context` parameter, and do the merge.  It might also makes sense to remove the `default_context` param from `get_settings()` and move it to this method as well?  That way `get_settings()` is only concerned with file loading, and not context merging.