Refactor to use channels instead of mutexes.
Merge pull request #1 from acquia/channelrefactor

Refactor to use channels instead of mutexes for shared memory.
Splitting out metrics, relays and logging for better separation of concern and testing.
Merge pull request #2 from acquia/multibackend

Split out concern to multiple files and allow configurable back ends.
Initial connection pool implementation.