generalized projectile

made projectile a base class, all projectiles will extend from this
moved raycast and hit detection code out of controls and into
projectile's update