Refactor HTTP error reporting

- `APIError` class extends `HTTPError`
- Custom error string logic moved into `APIError.__init__()`
- Conveniences: `explanation`, `is_client_error()`, `is_server_error()`
- Strip trailing newline from explanation
Call _raise_for_status every time we make a request
Enable overriding of APIError explanation. Override explanation for missing image in run().
Remove custom error code handling
Remove redundant status code check from _result()
Implement top()
Implement client.copy(), which works much like export()
Fixed several auth bugs
Cleanup, externalized into modules, fixed auth
Added license header to .py files
Use pseudo-constant for index URL
Fixed some issues with Client.pull + added auth support if version>=1.5
newline
Merge branch 'better-error-reporting' of git://github.com/aanand/docker-py into 0.2.0-dev

Conflicts:
	docker/__init__.py
	docker/client.py
Fixed tests
Merge branch 'implement-top-and-copy' of git://github.com/aanand/docker-py into 0.2.0-dev
Methods that previously supported multi-args are now single-argument. Doc and tests updated accordingly.
Merge branch 'master' of https://github.com/dotcloud/docker-py
Merge branch 'master' into 0.2.0-dev
Added lxc_conf param to Client.start