Many options have an effect on performance/footprint.
Some of these meet conflicting goals; e.g. small
footprint vs. high performance.
We should provide a user-modifyable global config to
allow the user to specify the requirements, so we can
size thread pools, specify sleep intervals, etc. in
accordance with user-specified strategy.
Something like "I won't have a lot of connections,
don't start a giant thread pool for receiving" or "My
messages are all tiny, reuse a small buffer."