Fixed enchantment level.

There was a logic error, an enchantment's start level was not being
taken into account.  This lead to a problem with at least one
enchantment type where getStartLevel() returned 1000 and getMaxLevel()
returned 1001, but the randomizer would try to call addEnchantment()
with 607 or something and an IllegalArgumentException would get thrown.
Fixed stupid mistake in previous commit.

Did subtraction backwards.
Optimized choosing of enchantments

Added a cache of enchantments for a given item.  If the list of
enchantments of has already been looked up for an item since the server
was last rebooted, looking them up again should be O(1).
Minor local changes.