multiprocessing - allows to catch tests that are running too long.

Re: Looping #3 

It could be made to run different tests in parallel, but this might mess with tests that read or modify files or other assets, so that will be the topic of another issue.

- [x] Run each test in a separate process
- [x] Give an error and cancel it when lagging too long
- [x] On error, it should also give an proper traceback instead of only showing async.get()
- [x] Setting custom timeouts (at least for tests)
- [x] Meaningful tests (IO tests need #5 fixed, but we can test functions and testers) 

Since the internal code running system got a little bit more complicated, to quickly point out where the issue is

- [ ] Internal (execution_base) tests

Difference made from #4 is that we don't need the confusing configure/reset cycle (at the overhead of an single subprocess). If we could detect where a test is from, even this overhead could be removed.