* 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.