Make wincurse handle a missing FONTDATA file by setting typeface_c to a
default value and writing out a new FONTDATA file.  Current behavior is to
error and default to something other than Terminus.
Create player::i_add_or_drop, use that to simplify a dozen call points.
Templatize inventory item removal functions and standardize naming.  Use
position-based item-identification to break most of advanced_inv's use of
invlets.
Notes: Most item related functions should be able to take 3 types of
locators--an invlet character, a position in the inventory, and a typeid.
This commit sets the pattern I'm going to use elsewhere--write an internal
function templated on type of locator, and have the 3 public functions
invoke it.  If most accesses can be moved off of invlet, invlets become
optional.
Code cleanup, simplify slice, make inventory_ui usage of slice slightly more
explicit.  This is prework for adding an indexed_invslice which can move
inventory_ui off of invlets and onto positioning.
player::i_at(int position) and inventory::find_item(int position).
Convention for positions is: 0 to n is inventory, -1 is weapon, -2 to -n
is worn items.
Added invlet<->position mapping.  Used that to change the interface for
interacting with inventory screens (right now, inventory usually converts
invlet to position, and most of the callers just convert it back).
Fix reading bug--wasn't reinforcing morale bonuses if the expected int was
above current int.
Migrate player_activity from invlet to position.  This would break
compatibility with saves that had an ongoing activity with an associated
invlet, but there aren't any usecases I know of that allow it (since
activities take control focus, and saving requires focus).
Migrate first aid to using position directly, add player::reduce_charges
to a fix pre-existing bug where first aid wouldn't be consumed when wielded.
game::handle_action migrated from invlet to position.
Migrate remaining iuse functions from invlet to position.
Migrate most game functions--everything but wield, reload, and drop.
Inventory and Multidrop screens no longer require invlets for inventory
items.  Dependency for weapon/armor remains.  Involves creating an
indexed_inslice so that filtered down views of inventory by
category/activation can still refer to the actual pre-filtering indices.
Migrate remaining invlet usage (except wield), add logic to force-assign
an invlet when wielding or wearing, and remove limits.
Current bugs: wield doesn't seem to work for no-invlet items, loading from
save tries to assign invlets to items without, displacing the invlet
values of later inventory items.
Save preserves invlets better.  Cannot reassign invlets from inventory
items anymore.  You can clear an invlet by pressing space, but it doesn't
really work because a restack() call aggressively assigns invlets, and we
immeiately restack().  So that's life unless someone tackles that code.
Fixed a strange bug where multidrop would try to takeoff an item that
didn't exist (resulting in a spurious message).
Ported code in iuse.cpp to positions
modified disassemble() to use pos
Bugfix: Starting characters wear their clothing again.
Use pos instead of invlet when tracking items going into a vehicle.
Bugfix: Mutations remove worn clothes properly.