Create factory method to get SwaggerClient which has the caching functionality

* Expose `client.get_swagger_client(...)` factory method which has the caching functionality

```
LOB sdist-make: /nail/home/prateek/pg/swagger-py/setup.py
py26 runtests: commands[0] | nosetests

....................................................................................................
----------------------------------------------------------------------
Ran 100 tests in 0.823s

OK
py27 inst-nodeps: /nail/home/prateek/pg/swagger-py/.tox/dist/swaggerpy-0.3.0.zip
py27 runtests: commands[0] | nosetests
....................................................................................................
----------------------------------------------------------------------
Ran 100 tests in 0.849s

OK
flake8 inst-nodeps: /nail/home/prateek/pg/swagger-py/.tox/dist/swaggerpy-0.3.0.zip
flake8 runtests: commands[0] | flake8 swaggerpy
flake8 runtests: commands[1] | flake8 swaggerpy_test
______________________________________________________________ summary ______________________________________________________________
  py26: commands succeeded
  py27: commands succeeded
  flake8: commands succeeded
  congratulations :)
```
What I would do is slightly different here:

I'd make a factory object which holds the references to the arguments and so on. Then rather than calling this again and again you just fetch a new factory from it. The cache can also live inside of the factory object and now you don't have to have any global state.

I'd then call this get_swagger_client_factory or just have the constructor of the factory do all of this work.