Problem
Currently, thread pool names are hardcoded (server and client). This means that their threads they cannot be easily differentiated when multiple pools of the same type are instantiated in the same process.
Solution
Add options for passing in a custom thread pool name.