particle-engine: Don't define a particle structure

This changes the usage of the particle_engine struct, making it more
'dumb' and less aware of the particular type of particle that you are
modelling. This means that each particle system must implement it's own
particle structure, and the particle-engine contains only enough
information as is required to draw the particle.
Add particle swarm and galaxy demo

This adds an alternate type of particle engine based on swarming
behaviour. At the moment, this is limited to modelling orbits, but ideas
for future development include modelling more natural swarming
behaviours.