[INTERNAL] terminate thread if they are not needed

It does not gain us any benefits for having running 3 threads that are
almost idle all the time. Changed the ExecutorService to use caching and
terminate idle threads if they are currently not needed.

Change-Id: I09dc298b97ed1b8db86ebed02fedac4116efeb48
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/1157
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>