Make tenant name lookup for keystone user lazy

Previously, when you managed a keystone user, Puppet
would start by loading all information available
about each user. Most of this information was loaded
with a single call to user-list, but the tenant name
required an additional two commands (one to get the
tenantId, and an additional one to get the tenant name)

This patch makes the tenant lookup lazy, meaning that
those additional calls will only be performed when
the tenant attribute is actually used. This will
cause a significant performance increase for the
case where only a large set of users exists, and
only a small fraction of them need to be managed.

Partial-Bug: 1224179
Change-Id: I7141d8e922005ecae33c2c596c9806a03fede53f
(cherry picked from commit c194f374e2c54d03f34f28f002e478b8556c94c3)
Do not set tenant description in cache

Prevously, after the full list of tenants
was retrieved to build the cache, an
extra call was made to tenant-get per tenant to
retrieve the tenant's description.

This extra call changed the cache creation
operation from O(1) to O(N).

This commit improves the query complexity to
0(1) by moving the description lookup from
part of self.instances to the description
getter method (essentailly making it lazy).

This will work different depending on if you
are interacting with the resource in query
vs. manage mode.

In query mode, self.instances will build
out the cache withouth the description initially.
Since description is a properly, it will invoke
the getter method.

In manage mode, the description getter will only be invoked
for cases where the description is managed.

Partial-Bug: 1224179
Change-Id: Id9268678e122ba3aa3e5b0bcfd77466071a4192d
(cherry picked from commit b48032a42fd2019d0d11e1dafa22fd8431b0c1c9)
Merge "Do not set tenant description in cache" into stable/grizzly