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 :)
```
Even though timeout is optional, I still like to document that it's a possible param with:

```
:param timeout: <some description>
```