Futures: cheaper default executor

MoreExecutors.sameThreadExecutor() locks for each
task execution, which can become quite expensive
in an application that is doing a lot of
transform and addCallback using the default
executor. As a full ExecutorService is not
needed in these cases, add and use a
plainSameThreadExecutor() method providing a
implementation of Executor instead. This
implementation can be a singleton as well,
reducing garbage.
use plainSameThreadExecutor where applicable