Adds a simple caching mechanism for resource class string and integer
codes. The cache is initialized with a RequestContext in order to fetch
a DB connection but only uses the DB connection to look up string names
or integer IDs if the requested key (string or integer) isn't either in
the fields.ResourceClass.ALL collection or not already looked up in the
DB.
The next patch in this series adds code to the resource_providers.py
module that changes all occurrences of fields.ResourceClass.index() and
fields.ResourceClass.from_index() to utilize the resource class cache.
In this way, we will transparently move from a situation with resource
classes represented only as Enum-based constants to a DB-backed solution
where custom resource classes can co-exist with the standardized Enum
constants.
Change-Id: I9b5b59a1e9715d61f55dc0f6189bcf8596052e2c
blueprint: custom-resource-classes