AP_HAL: New semaphore interface

* it now looks like a semaphore!
AP_HAL_AVR Scheduler: _in_timer_proc is volatile protected

* and AVRSemaphore is a friend, so it can read _in_timer_proc
  to know the current context.
AP_HAL_AVR: Implements new Semaphore interface
AP_HAL_AVR: Semaphore unit test
AP_HAL_Empty: implement new Semaphore interface
DataFlash: change to new style Semaphore library
AP_ADC: uses new semaphore interface
AP_Baro_MS5611: uses new semaphore lib