Redesign of the way ResourcePool manages resources

ResourcePool now behaves more like CachedThreadPool supposedly does.
 It will slowly taper off excess resources keeping track of peak usage,
 greatly easing burden on the GC. This tapering is based on a timer.
ResourcePool is now the proud owner of its own Monitor, to log resource
 usage.
Extensive testing for the new ResourceMonitor

Also locks min resource pool size for SlaveClient to 1