Local particle edits

This implements support for the ParticleScriptingInterface to update the local Particle tree when changes are made via it's API. As a result we get the following features:

* toyball.js is now much more responsive to the person with the hydra... because we see the edits to the particles without the server roundtrip.
* editParticles.js and findParticles.js can now run in the assignment-client agent.

closes #1697, closes #1698, closes #1699, closes #1700, closes #1701, closes #1702, closes #1711, closes #1710