QQuickParticleSystem: Optimize hash manipulation.

Before even checking the hash, perform the fast (empty string) check.

If it's not empty, then do a single hash lookup, not two of them. There's no
point doing a second lookup, since if it doesn't exist, we insert anyway.

This takes hash manipulation on samegame on a large screen from ~142ms to ~70ms,
which is expected.

Change-Id: I4e2a099e996f2f5fb95a5b066d7756373a1dbacd
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
QQuickParticleSystem: Micro-optimize m_emitters' handling of null pointers.

This shaves off around 35ms from samegame setup of a large game.

Change-Id: I91cb7e8d8db5da672e0dcf30a3c0bb0fa855c93f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
QQuickParticleSystem: Use QVector instead of QList.

This is more efficient, for the use we're seeing. In addition, reserve the size
in advance, to avoid reallocations.

Change-Id: I987ee7cea1aa32c4b1aad1246b6e22b87efd9cc6
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>