This allows us to remove the ImportError hack from __init__.py.
It also simplifies how the package is versioned - deriving it solely
from the repository tag.
Both version_info and __version__ have been removed with this change.
Given how these are a unofficial-standard at best, I've found it safer to
always use pkg_resources to determine the version when I need to.
Extended the `ImportError` handling hack to correctly handle the
case where we cannot import submodules AND someone is extending
one of the exported classes. Previously ContentMixin and
ContentSettings were functions when ImportError was raised which
causes really confusing errors.
The correct solution here is to stop exporting stuff at the top-
level and require clients to import from modules but that is for
another day.
This lets any transparent caches that our responses will vary based on
the Accept header. Without this, caches will assume that a cached
response can be used even if the Accept header differs.
Distributing a raw python module into a namespace package seems to be
somewhat unreliable though I haven't proven it yet... In any case,
installing a package inside of a namespace package behaves itself.