Refactors the item classes

This commit refactors all of the Item types to:
1) Implement an "Item" interface
2) Extend a "GenericItem" type
Adds support for retrieving items and items documentation

This commit adds support for retrieving item ids and item details
from the remote API. It also adds a lot of documentation for the
items classes. And it also improves the Coins class with some
subtraction utility methods.