Updated ItemArrayData

Added some missing documentation for constants.

Added GetItemTypeArrayDataSize.
Added ItemList extension

Generates arrays of items that include extra-data arrays from
ItemArrayData. Useful for storing BLOBs of items that include their
array data too for "compressing" and writing to files.

An "itemlist" object is a creatable/destroyable entity that contains the
list of items and their array data in separate arrays for fast lookup as
well as the full raw data string for returning. When an itemlist is
destroyed, it's handle becomes free for use by CreateItemList again.

An itemlist can be created from two sources: a list of item IDs or a raw
item list (one that was output from GetItemList).

A basic example of using this script would be:

- Create an item list of a player's inventory items when they quit.
- Get the raw list and store it to an array.
- Store the array in a binary file (using modio or fblockwrite).
- Load the array next time the player logs in.
- Use ExtractItemList on the loaded data to extract items.
- Loop through the items and create them with their array data.
- Add the items to the player's inventory.