Made addForeignInventory() public.
Just in case the custom event handler wants to call that.
Actually parsed out currency id.
Made "trade event 5" a named constant value.
Added rudimentary currency handling.
The currency instance is just passed to the listener as another item.  No quantities yet.
Modified TradeInternalItem / Currency constructors.
Changed constructor to accept the rgInventory inner object instead of an id number.  This adds support for the "amount" property in currency and stackable items.
Created base class TradeInternalObject.
A TradeInternalObject instance holds a few variables common to all tradable items.
Converted the core info from TradeInternalItem into the TradeInternalAssets class.
This change means that the TradeListeners take TradeInternalAssets for item add/removal events and that currency items are more cleanly separated from the plain items.
Reflected change to using TradeInternalAssets.
Added support for asset type.
Made getters final and added override-able getDisplayName().
The finalized getName() method now returns the displayed name.
Modified inventory and items to use AppContextPairs.
Fixed getAppid() and getContextid() methods.
Forgot to remove the old appid and contextid variables.  Oops.
Commentary fix.
Added AssetBuilder class.
This class allows one to implement custom TradeInternalItem/Currency subclasses to read inventory items.
Finished up assetbuilder support.
Added AssetBuilder example.