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).
I think we want to convert the bare returns to return fmt.Errorf(...), otherwise I don't believe that the condition will cause the method to exit. Is that what you mean @bbangert?