Changed ListenableFutureTask to be a leaner more efficent version to function when we know there is no possibility of handling VirtualRunnables or VirtualCallables.  Then added ListenableFutureVirtualTask (which is the same old implementation of ListenableFutureTask) to handle cases when it is possible to be dealing with a VirtualRunnable or VirtualCallable.  There may be more performance to be improved in the future, but this is a minor first step.