tower5: signal emit/receive implemented, exposed in public api

* A bit of internal refactoring to the OS/TaskSchedule/SigSchedule
  emit/receive api
* A refactoring of the ivory-tower-freertos schedule code, so
  os primitives and macros are parameterized on the Ctx (isr/user)