Get rid of some warnings when running applets
"Hydrogen Combustion": fix "slow motion" button

Basic timeStep is 0.2, not 1.
"Hydrogen Combustion": update "spark" script + minor changes

[#57242508]

Ensure that atoms receive velocities in the opposite directions.
Slow-down model for a while.

It should be more reliable now, but still sometimes a single spark
isn't enough to start a reaction.
Merge branch 'master' into wip-java-perms
Merge pull request #53 from concord-consortium/wip-java-perms

Get rid of some warnings when running applets
Sensor applets now return JSON strings instead of Java objects
use reload in particle mixing

[#54874264]
forceStrengthDirection update lines immediately after toggling

[#56548792]
Reduce memory leak by sharing shadowed globals by all script functions

[#60338690]

E.g. in:
http://lab.dev.concord.org/interactives.html#interactives/basic-examples/atom-data-table.json
memory consumption is redruced from 100MB to 30MB.

Now each interactive update (using Interactive Editor) increases
memory consumption by 1.5MB instead of 80MB.

It's nice, but I'm afraid the real bug is still there, it just makes
symptoms less serious.
Reduce / fix (?) memory leak connected with Scripting API recreation

[#60338690]
use mixins to get vendor prefixes
Create ReferenceError throwers one scope higher

This ensures that the getters/setters on shadowedGlobals (which just throw ReferenceErrors) don't cause any more closure contexts to be retained than are already retained by the continued existence of the ScriptingAPI module.

Previously, this anonymous IIFE that made the ReferenceError-throwing functions also kept the context of the setShadowedGlobals in memory. This included at least an array with hundreds of strings, and an additional such contexts would be created every time setShadowedGlobals added a new throwing function for a newly created global.
rebuild html files if setup.rb changes
Always include shutterbug even in static build

these changes make shutterbug available even in the static
distribution case. Currently shutterbug will not be
able to save an image because it won't have a valid server
to connect to. But if the static page is embedded in an iframe
inside of another page. Then the outer page can use its
shutterbug to take a picture of the frame.
[#59909576]
shutterbug is needed outside of app now

it is at least needed to build when travis is building
and the static site needs it now which seems non-app
[#59909576]
fix issues with shutterbug building

[#59909576]
Fix failing md2d scripting api tests

[#60338690]

Call scriptingAPI.exposeScriptingAPI() after binding a new model...

This doesn't seem like a necessary step. However, without it md2d-scripting-api
tests fail, but only when all tests are run (e.g. make test-src)! When you run just this
single test everything works (e.g. mocha test/md2d/md2d-scripting-api). It looks like
window.script variable references some old API instance and seems to be related to the
test environment setup. Temporarily put this call here for safety.
Implement automated benchmarks page (WIP)

[#57545536]

TODO: send results to google spreadsheet.

It runs through selected category of interactives, starts benchmarks
and logs results.
Avoid updating button style every tick

[#60113594]

This doesn't appear to make anything any faster (at least, not in already-fast browsers...it may help in slower browsers) but it removes extraneous entries from the Dev Tools timeline view.
detectFontChange: call onchange for every request

[#60614818]

Previously we were ignoring onchange if a request to watch the given font was already in progress. That violates reasonable expectations and just plain leads to chaos and confusion.