Multiple API Versions Support

This adds the ability to load multiple API versions of a service at once. It's backward-compatible (shouldn't break the current CLI, simply returning the latest version of the service for use to match current behavior) & refactors the internals of loading the JSON. It should allow us to do better/swappable caching (maybe LRU?) or alternate formats (maybe the ``.pyc`` or splitting per-operation).

Fixes #120, #113, aws/aws-cli#338.

Review please? @jamesls @danielgtaylor @garnaat