Fix and implement data offset options for time series bar charts

Previously, barLeftOffset didn't behave entirely clearly. Treat inputs
to barLeftOffset as data offsetting instead of just rendering offsetting
in order to properly draw bar charts where data points shouldn't be
drawn as the center of the bar.

Author: Dylan Nugent
Implement more useful value labeling.

Add independent value formatting for axis ticks and hover values on
charts that have axes displaying values. Ticks display unrounded but
SI-prefixed values, ensuring that two ticks showing the same value due
to rounding to a significant figure below the tick delta never happens.
Hover values show value to fixed precision of 2 numbers after decimal,
and formatting value for hover only can now be overridden with
"formatLabel" instead of "formatValue" variable to reflect that this no
longer updates the value formatting used on the axes.

Author: Dylan Nugent
Fix bug `Assertion failed: Expected hash or Mixin instance, got [object String]`
Allow axis labels on time series charts to be centered

Add a setting "centerAxis" for the time series labeller which will place
time labels at the center of an interval instead of the start of that
interval. For instance, with "centerAxis" true, the label for March 2004
would appear at the tick on March 15 instead of Match 1.

Author: Dylan Nugent
Implement sort-by-value on vertical bar charts

Author: Dylan Nugent