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.