This adds caching of resource limits for an Enforcer in order to
improve performance when repeated limit checks are needed. The cache
lasts the lifetime of an Enforcer and is enabled by default. It can be
disabled by passing cache=False when instantiating an Enforcer.
One usage pattern for a caching Enforcer would be to create an Enforcer
per service request so that the caching lives only as long as the
request.
Change-Id: I8e43dceec76aecd2b2ae23a137e56519efe29777