Add ability to send batch of actions without changeHooks

Calling model.startBatch() before a series of otherwise-
invalidating changes will prevent the pre/postChangeHooks
from triggering a recalculation of model output properties.

This results in the ability to perform large sets of
actions faster, so long as the batch of actions does not
expect properties to be recalculated between each action.

Script authors can access this functionality by wrapping
sections of script in a batch function, e.g.

batch(function() {
  // do something
});

This syntax will prevent accidental starting a batch without
ending it, which would cause model not to function correctly.
Simplify deserialization slightly with batch