"target.disarmable" support

This incorporates the changes that CuteOne made over three pull requests (112, 113, 114) plus new additional changes that will allow for proper disarmable checks.
The logic is such that player.disarmable is initialized to true and whenever the error 'SPELL_FAILED_TARGET_NO_RANGED_WEAPONS' is logged, it gets set to false.  Whenever a new target is selected, player.disarmable is then reset to true.

There is probably a cleaner implementation but this does appear to work for now

Usage example:
{ "Grapple Weapon", "target.disarmable" },