Items in "Extras" are now sortable

[#47588239]
new modeler outputs: tickCounter, newStep

[#47596415]

These are needed so we can get these values when communicating to an Interactive embedded in an iframe
using the iframePhone postMessage API.
update/refactor grapher structure and API

[#47596415]

Lab.grapher has been refactored to use a pattern more similar
to other code in the project. An api object is created and
returned when a new Lab.grapher object is created.

A number of functions and variables that weren't used externally
have been removed from the API.

In addition the functions exposed by the api object now use
camelCase names.

External programs within Lab that use the API have been updated.

Nominally a new feature exposed by this is that the 
Energy Grapher in the Extras section of the Interactive Browser
page now both works and supports stepForward and Backwards properly.

When the iframePhone postMessage API is initialized it can now take
and optional callback to run after successful communication
with the Interactive embedded in an iframe is established.

In addition a postMessage queue is established on initialization
and any postMessage invocations that occur before communication
is successfully established are queued to run later.

The 'get' eventType in the iframePhone postMessage API is fixed
(it didn't work because it was communicating the propertyValue 
in an attribute named "value" instead of "values".

TODO/FIXME: When a new Lab.grapher object is created it doesn't
calculate the size of its container properly if the container
is not visible. It would be useful to have a way of handling
this more effectively than making the destination DOM object
visible during initialization and then hiding it if it should
not be visible.
Don't register 'keydown' handler multiple times in interactive controller

[#46375033]

Previously each time model was loaded, a new keydown handler was
added. That worked, as also new model_player was created. After
refactoring it was causing problems.
Use 'showClock' option to control clock display on play/pause button

[#46375033]
Don't show clock in the model area

[#46375033]

As now it's shown on the play/pause button.
Change order of buttons in playback controller

[#46375033]
Display grid lines on bar graphs

[#44616153]
Disable axis rendering, also remove 'ticksSubdivide' option

[#44616153]
Treat bar graph 'width' option as width of the bar itself

[#44616153]

Not as width of the most outer container (as it was earlier).
Also move labels to the left side of the bar graph (to fit Upstatement
design).

TODO: change 'width' to 'barWidth'. 'width' should be reserved for
options setting width of the most outer container. Also fix existing
interactives.
Style container of the bar graph

[#44616153]
Change orientation of the triangular indicator in bar graph

[#44616153]

As labels are now on the left side.
Fix interactives which are broken after bar graph width function change

[#44616153]
grapher: fix data() function in api

[#47596415]

exposed in IS Sensor Data Collector
Add slight inset shadow to bar graphs to match Upstatement design

[#44616153]

They were using border with linear gradient (unavailable in CSS), so
inset shadow is a nice workaround.
Better fix for showing data lines in realtime sensor graphs
IS: Only clear values on export, not labels
iframePhone: add "removeListenerForDispatchEvent"

[#47596415]

Used in application.js to remove model property listeners
when EnergyGraph is not visible.
handle both regular and frame eventHooks

[#47596415]

Fixed EnergyGraph in non-iframe embedding mode.
update v9 of IS climate model to release v9e

[#47666067]