Adds a new struct for encapsulating projectile data within the bullet system.
Changes the bullet system to use ProjectileData<Bullet>.
Changes the bullet system to use ProjectileData<CurvedLaser>.
Changes the bullet system to use ProjectileData<Beam>.
Changes the bullet system to use ProjectileData<Laser>.
Fixes the projectile looping using a constant rather than the array size.
Merge pull request #6 from mohammedh123/refactor/bullet-system-code-duplication

Refactor/bullet system code duplication