BlinkM test script for running I2C under HAL.   Upload this script as-is to an APM2.5, and the BlinkM will give you some feedback.   I've left the equivalent non-HAL Arduino code in the major functions in-case you want to do something more Arduino-like, and less HAL.
New HAL Notify Library.     Current implementation only supports BlinkM on AVR APM2 compatible board/s, but scaffolding is in-place.
Should be reasonably easy to tweak and extend it to support other things and platforms, as desired.
HAL Notify Library testing - this is an incomplete commit and should probably not be pulled. It hijacks the startup of the ArduPlane firmware to make it execute a bunch of BlinkM stuff.     Most of them work, but a few don't, not entirely sure why yet, but it's possible that the BlinkM_stopScript() isn't working?   see the 'enum NotifyType' in  AP_HAL_AVR/Notify.h , and the implementation in Notify.cpp's AVRNotify::notify function.