Concurrency

These commits implement the *mutex* and *condition variable* multiprocessing data structures.

Don't merge this until:
- [ ] Mutexes are made re-entrant
- [ ] Testing is performed