Add SwaggerClient proxy

SwaggerClient now wraps the core _SwaggerClient class. Each attribute call to the core is intercepted by proxy and checked for api-docs freshness first. If stale, api-docs are fetched again, and the attribute call is then passed to the core.

```
GLOB sdist-make: /nail/home/prateek/pg/swagger-py/setup.py
py26 inst-nodeps: /nail/home/prateek/pg/swagger-py/.tox/dist/swaggerpy-0.3.0.zip
py26 runtests: commands[0] | nosetests
  from twisted.internet.interfaces import (
.................................................................................................
----------------------------------------------------------------------
Ran 97 tests in 0.767s

OK
py27 inst-nodeps: /nail/home/prateek/pg/swagger-py/.tox/dist/swaggerpy-0.3.0.zip
py27 runtests: commands[0] | nosetests
.................................................................................................
----------------------------------------------------------------------
Ran 97 tests in 0.667s

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 :)
```
Could this be due to the `__slots__` ? This is a really weird way to deal with it. I would think that adding to slots would be a better approach.

```
__slots__ = ('args', 'kwargs', 'timestamp', '__subject__')
```

Otherwise I think you're writing to class variables. 

I tried using slots and I believe it worked.