Approval-tests for compile errors in docs.

Compile errors are in files doc/*.compiler-output, and are checked
against what rustc outputs during the build. If rustc behaviour
changes the new output must be 'approved' by copying the actual output
from out/compile-output into the doc/ directory
Semaphores implemented with Raspbian eventfd so that tasks can signal to
tasks blocked on IO.