New particle scripting interface

closes: #1588, #1589, #1587, #1575, #1486

New Features:
* Voxels JS API has changed to easier names Voxels.setVoxel(), Voxels.setVoxelsNonDestructive(), Voxels.eraseVoxel()
* Particles JS API now takes "hashes" as parameters and has simpler names. example:
```
var particle = Particles.addParticle({position: { x:0, y:0, z:0}});
```
* Particles now support addParticle(), editParticle(), deleteParticle()
* Particle editing protocol between clients (editors/scripts) and server now only sends changed items
* editParticle() can be called with only the properties you want to change

Note: This change requires an update to clients and servers as the protocols and wire formats have changed.