Due to the decorators used in the GUI code with lit which is not
supported natively by node the tests under helper.test.js return module
error. This commit fixes by refactoring the `simpleMetricFactory` method
to remove dependency on code using experimental decorators.
Change distance, timer and calories tile to change behaviour when
current workout is an interval session (i.e. not JustRow).
Expose data necessary for this in RowingStatistics. Remove miles option
from formatter.
Refactor appMode setting so it becomes internal to the DashboardAction
component as it is not used anywhere else. This prevents exposing
unnecessary - essentially internal - state to the global appState.
Fix the HR battery level not showing on the HR metric tile (ANT and BLE)
For ANT handle case when BatteryLevel is not present only BatteryStatus.
BLE devices do not necessarily send battery level with all HR broadcast so
read the battery level on connect.
Make all settings available to the metric creator factory in order for
subcomponents (e.g DashboardAction) to use it without depending directly
on the global appState.
Remove dependency on metric formatting logic at the server. Implement
the formatting of the raw data on the client side. Make adding
new metric tiles more modular and extensible via simplified creation API