net/http/limit: extract limit functionality
net/http/limit: extract limit functionality

Rather than having the limit functionality contained in handler, it is
moved to a separate struct. This is helpful for allowing other protocols
to use limiters.

Closes #392

chain/chain,chain/chain,chain/chain,chain/chain,chain/chain,chain/chain