fix pressure equilibrium interactive

[#49553619]
Add model.batch() method (+ minor fixes)

[#50612355]

e.g.:
model.batch(function() {
  // do something
});

instead of:
model.startBatch();
// do something
model.endBatch();
Implement .generateProtein() in genetic engine (move it from MD2D engine)

[#50612355]
Remove .generateProtein() from MD2D modeler and engine

[#50612355]
Notify property observers *after* calling property setters

[#50612355]
Fix model.start and model.stop methods (+ remove .resume completely)

[#51228691]
Generate the complete protein while jumping from translation :0 to -end

[#50612355]
Update genetic engine tests

[#50612355]
Update "DNA Animations Example" interactive

[#50612355]
Fix sliders not working in new diffusion interactives

It turns out the "bottom2" section was covering the "bottom1" section,
so input events weren't going through. By reversing the order they're
defined in the template definition, we can be sure "bottom1" will always
layer above "bottom2".
Adjust number of transcribed nucleotides during deletion or insertion mutation

[#51154779]
Make validation of model properties more powerful

Custom validate function can be defined in the metadata now. This
function should throw an exception when value is invalid. Otherwise,
it *must* return the final value. Note that it can be used to
automatically "fix" the simple user errors if validation functions
knows how to do it.
Move validation of DNA from genetic engine to metadata

[#50478711]

Using new validation features added in bc96af0f81cb8f1f3dff4cc10
Remove geneticEngine.validate method (use generic properties validation)
Add automated tests of DNA mutations

[#51154779]
Rename geneticEngineState to DNAState

Shorter and more consistent with dna-prefixed scripting API functions.
Polish Scripting API related to DNA, add two new functions

[#50746215]

DNAStateBefore and DNAStateAfter
Update DNA Interactives

[#50746215] [#50671851] [#50672065]
Make mutations menu working with single tap on iOS

[#51298345]
add mocha-phantomjs, chai, downgrade mocha

regarding temporary downgrade of Mocha from 1.9.x
to 1.8.x see:

https://github.com/visionmedia/mocha/issues/770
https://github.com/metaskills/mocha-phantomjs/issues/58