Revamped several types (thereby also fixing Subtlety bug)

Previously fsil didn't take into account weapon handedness. To
fix that, I revamped the Equipment type: instead of equipment
we now have data Equippable = Equippable BaseEquip EquipType;
BaseEquip contains stuff common to all equippable items, and
EquipType encodes the specific type of item and any properties
specific to that type (e.g. damage for weapons).

At the same time I also changed the type of the
player's equipment from [Equipment] to Map EqSlot (Maybe Equippable).
EqSlot is just an ADT with one value constructor for each equipment
slot that the player has (main hand, helm, right ring, etc.) I'm
preparing for a more complete simulation of the mechanics, where
(e.g.) instead of reading the player's total attack value from the
char dump, we instead parse every relevant bit of information
(stats, race, equipment properties, and so on) and compute the
attack value ourselves. This would allow players to see how wielding
a different weapon or adding a new ability would change things with
a simple command line switch rather than generating a new char dump
(either in-game or by editing).

This commit also fixes #1, because weapons now have handedness
and Subtlety calculations should take it into account correctly.