Add caching to osclients.Clients

Here we add caching capabilities to the osclients.Clients class, so that any
openstack client, created once, gets stored in the cache and is immediately
returned in case of future calls to the corresponding method of Clients.
This is needed for implementing lazy OpenStack clients for temporary users
where it is not convenient to store clients in Scenario classes but making
use of caching in osclients.Clients makes sense.

Blueprint lazy-osclients

Change-Id: I5021ae0c2e11f0a27a6ea94e5a254739ddec869f
Merge "Add caching to osclients.Clients"