Use user-supplied allocator for scheduler, timer, strand and channel.
Use different small block recyclers for different purposes.
Use user-supplied allocator for the polymorphic executor's function objects.

If no allocator is specified, uses the small block allocator.