SOLUTION: Fix chMtxUnlock ordering

Simplify Mutex lock / unlock flow.

Fixes #122
Fix wakeup of solution thread.

Check timer counter when resetting period and use a semaphore to
wake up.  Fixes #69
Code review fixes.

Initialise semaphorewith chSemInit.
Expand output on missed solution deadline.
Reorder and group initialisation of semaphore, solution thread and timer.
SOLUTION: Move process_matched_obs() back inside chMtxUnlock

Moving process_matched_obs out of the lock zone improves system liveness considerably and fixes an issue where the solution thread will miss its timing deadline. However, it would introduce an (unlikely) possibility that the low latency baseline could be calculated when the filter is in the process of being updated.

See issue #141.
Merge pull request #140 from gsmcmullin/solution_wakeup

Fix wakeup of solution thread.
Merge pull request #137 from fnoble/base_pos_mtx_fix

Fix chMtxUnlock ordering