* Clean up the CombatAction and Attack code to make it easier to use for
range.
* Add collision detection to the distance checks before attacking in the
CombatAction.
* Create a Ruby DSL for defining projectile types and fix the
ProjectileUpdateOperation so it uses the correct position offset.
* Fix the packet structure of the HintIconMessageEncoder.
* Allows switching between different combat styles, and updates the
combat tabs styles for every equipped weapon. If a weapon with a
special attack is equipped, the special bar for that interface will be
shown.
* Adds a scheduled task which periodically restores special energy to
the player and updates their special bar.
* Uses a hierarchy of WeaponClasses -> Weapons for performing attacks,
with WeaponClass having a set of styles and associated Attacks for
those styles. Weapons and their classes are built with an easy to use
and clean DSL.
* Adds a BonusContainer mixin, so that Equipment, Weapons, and
WeaponClasses can all have their own set of bonuses which apply to the
player.
* Allows attacks to be queued to the Mobs CombatState instance from
external code, allowing e.g., NPCs or auto-cast to queue attacks to be
executed.