make_armor fixes + object-based items

make_armor wasn't returning a proper negative armor bonus for ancient
armors. This has been fixed. It also wasn't assigning slot correctly for
shields. This has been fixed.

The item use function is now based on a subclass instead of a function.
This means one more step when declaring an item, but also means that
items can be created with actual parameters for their use functions, and
may allow for other cool stuff to be done to them later.

Go go OO programming!