Model adapters

I was really unhappy with how #52 turned out, so this is another attempt at supporting the use cases described in #42, #48, and #49.

This pattern should make it more straightforward to add adapters for new external representations. For example, it should be easy to create an adapter that can convert a `MTLModel` to and from an `NSManagedObject`.

**New interfaces:**

 * [MTLJSONAdapter](https://github.com/github/Mantle/blob/model-adapters/Mantle/MTLJSONAdapter.h)
 * [MTLModel+NSCoding](https://github.com/github/Mantle/blob/model-adapters/Mantle/MTLModel+NSCoding.h)

**To-do:**

 - [x] Refactor `MTLModel` implementation and implement new interfaces
 - [x] Update value transformers
 - [x] Implement backwards compatibility for old archives
    - Most of the responsibility for this will fall on the `MTLModel` subclass, which should override the new `+dictionaryValueFromArchivedExternalRepresentation:version:` method.
 - [x] Refactor and add unit tests
 - [x] Add `deprecated` or `unavailable` attributes for old methods
 - [x] Update README sample code
 - [x] Test a real-world consumer with the new APIs
 - [x] Add class cluster support to `<MTLJSONSerializing>`