Use LimitListener if a limit is specified

Go's net/http library creates a goroutine for every request which if an
application does not finish processing requests quickly enough, many
goroutines can be created allocation quite a bit of memory.  By using
the LimitListener we can limit the number of concurrent requests being
processed.