Changed Projectile so it implements HasTarget. This allows either the ability (implementing HasTarget) or a projectile to be passed to the onImpact method and treated exactly the same way.

Updated all ActiveAbility subclasses to reflect this.
Updated the Cleave ability so it can't trigger more than once every 0.05 seconds from different targets (same target is fine).
Added the Crescent active ability
Modified the critical hit handling so both crit chance and crit damage can be overidden in the call. This is to allow abilities (E.g. Statikk Shiv) to force crits.
Added AoE to Statikk Shiv Passive and changed it so it only crits when the triggering attack crits.

Also changed the stacks to be stored as a double internally for accuracy while moving (when implemented fully).

Note: The 400 range is an estimation based on Ionic Spark's bounce range since they are similar items.
Seperated TargetDistance and it's comparator from Runaan's Hurricane since other abilities may need to use it. Was initially done to be used with Statikk Shiv's AoE but was not needed in the end.
Added 'Melee Only' text.

Note: Added 'Ranged Only' text for Runaan's in the last comit.