Add JSONRPCBadResponse and JSONRPCRequestFailure exceptions.

This is to distinguish between error responses, failed requests, and
malformed responses.
Add JSONPRCResponseError

This is added because JSONRPCResponseErrors contain a dictionary type,
while all the other errors contain strings.
Minor tweaks
Add tests
Merge branch 'exceptions'
Merge branch 'tests'
Update LICENSE and setup.py