Add smarter scaling of values in charts, tables

Adds a new Quantity class which can more intelligently scale units by
order of magnitudes. Most D3 charts have been updated to use this class,
while ensuring that all values (e.g. axis, tooltips, tables) use the
same unit.

TableView has been added to replace the previous implementation which
was mixed between model, view, and template.

Ref quintel/etengine#712
Closes quintel/etmodel#1809
Add support for "scaled" scenarios

* Currently provides an exceptionally basic, unvalidated for at /scaled
  for creating a scenario with a custom-scaled area.

* Units in charts are automatically changed to smaller orders of
  magnitude, as appropriate, to be more readable.

* Input steps are adjusted as necessary to suit those inputs whose
  min/max values are substantially smaller than in the full-size region.

* A message informing the user that the scenario is for a custom region
  will appear in the settings menu.
Add a sizing hint to the scaled scenario form
Clone the options object when formatting values

Failing to clone the opts object means that the same precision will
be used for formatting all values in the series. This poses a problem
when the first value to be formatted has a precision of 0, as the
formatted series might look like: 0PJ, 0PJ, 0PJ, 1PJ, 1PJ, instead of
0PJ, 0.2PJ, 0.4PJ, etc.
Nicer number formatting in the settings menu