Introduce SwaggerClientFactory

`SwaggerClientFactory` instance maintains the state of all swagger
clients and their timeouts. `factory` is a global instance of
`SwaggerClientFactory`, which is instantiated by the public factory
method `get_client(..)` if it is None, else it is used again.

`SwaggerClientFactory()(..).client` can be used directly if global
module variable 'factory' is not desired.
How about something like this... `build_cached_client` can be moved to SwaggerClientFactory
and `CachedClient` can be changed from `namedtuple` to : 

```python
class CachedClient(object):
  def __init__(self, swagger_client, timeout):
      self.swagger_client = swagger_client
      self.timeout = timeout
      self.timestamp = time.time()

  def is_stale(self):
      return self.timestamp + self.timeout < time.time()
```
as `is_stale` is more of a check method of `CachedClient` ?