Cache novaclient objects

Novaclient instances (via their internal requests.Session object)
do not correctly clean up after themselves.  This visibly manifests
in the file descriptors for sockets not being closed.

A simple solution to this problem that also gains some efficiency
is to cache the novaclient objects for each provider.  Based on
limited examination and research, I believe they are thread-safe.
The underlying requests library certainly is expected to be.

Change-Id: I541a0783fabef368449ef6dc8c3cf766d3560bfa