Limit concurrent HTTP API send requests

We currently accept as many concurrent "send message" requests as we're given. This branch adds a limit to avoid overwhelming the rest of the system when a single client pushes a high volume of messages.
They're not things to keep in sync. The concurrent count is the number of things that have been started but not stopped and the waiters list is for things that are waiting to start.