Add extended particles api.

This api extends the features of the particles api, which allows us to create colored particles, colored particles, particles with motion vectors and so on. This is possible by changing the amount of particles that are send in the packet to 0, this changes the behavior on the client.
When does it throw an `IllegalStateException`? You should add Javadocs for that.