Create an IndirectImmediateExecutor

This is supposed to solve #161 

Is inheriting from `ImmediateExecutor` OK or should the `IndirectImmediateExecutor` implement all the required methods on its own?
I don't think sharing a `SingleThreadExecutor` is possible - if you schedule a task that schedules a task you'll get into a deadlock? A single `PerThreadExecutor` is probably better.