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 :)
```
Except that it will make it extremely difficult to untangle that state later. Having the state on an object and then putting that object somewhere that the application has control over makes it much simpler.

If we want to have a convenience API where it uses a threadlocal for holding this thing inside the library, that is acceptable. But it should be implemented in terms of the Factory object.