* correctly validate channel parameter and improve other parameter
access
* dynamically enable channels to avoid spending time converting unused
channels
* implement tracking of reading health
* correct reading scaling by using datasheet values
* accumulate measured current to track used mAh and Wh
* make configurable using #defines (and hwdef) for integrators
* correctly separate and lock frontend and backend state. Note that
_state of frontend can only be accessed in `read()` method.