Respect channelMax

Limit number of channels to channelMax as negotiated with the server.
Try to find an available channel id, even if it means to wrap around.
Return ErrChannelMax if no available channel id can be found.

Addresses #115
The problem is that the mutex around channelRegistry state is released between `next()` and `add()` meaning that `next` is concurrent with `add` but `next` assumes that `add` happens before the check for an available slot.

One option is to make the registry a channel factory returning a `*Channel` with the both the `id` set and the map updated guarded by the registry mutex.