Add scheduler and task runner module + bug fixes
This release adds a task runner and scheduler module and contains various bug fixes.
The task runner (enabled by default) allows you to submit new tasks to be run in a controlled environment. It should only be a method of last resort to run go routines while still (somehow) tracking their results. IF ANY OF THEM FAILS, THE WHOLE TASK RUNNER WILL BE SHUT DOWN.
The scheduler module (which currently uses the task runner in the background) allows you to batch requests for a specified time together (or until reaching a batch size) and execute them all at once.
Other changes and bug fixes:
- The profiling module can now be enabled via a config setting without changing the code
- A possible leak of go routines was fixed in the kernel (when you execute multiple kernels after each other)
- A race condition was fixed where the kernel would report a failed module as successful