Add rate limiting

This pull request adds support for rejecting incoming connections if too many goroutines are active at once, and rate limits HTTP requests from origin IPs. `RateLimitedHandler` uses a token bucket implementation ported from [`node-restify`](https://github.com/mcavage/node-restify).
These are the wrong place to discover that we're using too many, cause it means we're already using them. We need to be close enough to the socket to not accept/spin up more goroutines to begin with.