Get less confused about what the service ID refers to.

In order to reflect what the API service is actually doing, it's an identifier for the IAPIMock provider, not an individual enpdoint, since an individual endpoint can't be reliably identified across tenants.  This also changes the URIs so that the service ID comes first, before the region, since region names only really exist *within the context* of a particular IAPIMock plugin.
Remove unnecessary variables.
Fix tests to honor now-current URI structure.
tests for the url fixes
Merge pull request #57 from rackerlabs/url-fixes

fix URL structure and spurious duplication of endpoints in service catalog
Move session storage to a separate module so that it's easier to understand MimicCore's role.
Merge pull request #58 from rackerlabs/refactor-core

Separate concerns in MimicCore somewhat so that it's easier to follow what the code is doing.
break literally everything
at least it's not global
Add region argument to resource_for_region, add s_cache everywhere.
some unfinished typing
WIP
Complete at least the sketch of the error-injector API endpoint.
various lint fixes, some explanatory documentation.
Reformat code to make it more readable.

Especially, call out 2-tuples that include a status so it's clearer
we're not just returning a dict.
This interface was a mistake.

Just delete it.
document type of cache dictionary
Fix resource_for_region signature in a few places.
copypasta from cryptography

I don't know what this does or why it works, but thanks @dreid for the suggestion.
Change the syntax on some dict comprehensions.

So that coveralls can *succeed* at reporting that python 2.6 has no coverage.

Despite the fact that no tests are actually run.

Because python -m unittest discover doesn't actually work, even though it does *something*...

All for the want of a horseshoe nail.