EntityProjectile's should take a location (location objects include a direction), not a player firer.
Projectiles don't necessarily need to have a firer, but we should still have a setFirer function for possible callbacks and making sure projectiles don't hit their firer if there is one.