Our current Particle system supports CPU particles. Add support for GPU particles to allow us to render/update more particles. Allow users to provide shaders for custom updating/rendering of these particles. In addition, add support for rendering meshes and other shapes instead of just billboarded quads.

Some of the work from https://github.com/highfidelity/hifi/pull/8324 can be revived for this