Adds support for limited version of managed blocking that aborts if ther...

DO NOT MERGE

Proof of concept for doing managed blocking for ThreadPoolExecutor,
inspired by an excellent discussion between @huntc, @hseeberger, @richdougherty and myself.
Maybe document the case when `prestartCoreThread()` returns `false`. Because that's one important case where `canBlock()` returns `false` (causing a `RejectedExecutionException` to be thrown).