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.
One thing to help with testing, have a default parameter that is set to None. Then override it to time.time() if it is none. Then in testing you can inject arbitrary times to test this.