More robust error raising

- [x] Add type hierarchy for client, server errors
- [x] Move errors into Octokit::Error namespace with backwards compatibility
- [ ] Use `Octokit::Error::XXX` types for internal exception handling
- [ ] Parse `403` and raise `RateLimited` error as appropriate