Duplicate commit as in other repository.

Integrated in control binds (Rebind).

Included event hooks, PokeParty replacement for hard coded implementation.
Fully integrated the PokeParty class. Code quality commit.
Decided to turn the reference field for active Pokemon into a property, which directly obtains its value from PokeParty. Ensuring value consistency.
Separated the game logic from the control scheme.
Enables PokeParty to be independently used by any trainer. (Multiplayer consideration)
Added max for the max number of pockets, for use in the inventory.
Prepares for the new multiplayer conscious inventory system.

Major benefit here is that each instance of an item will refer to a shared data source, each trainer then does not have duplicate items with duplicate information. Making it better for multi-trainer use.

The new inventory system (next commit) will be independent of any one trainer, so it can be reusable. As well as better encapsulate inventory operations and functionality.
Implemented and fully integrated a proper Inventory system. Initial release with more functionality expected, such as retrieving all items in a pocket 'trainer.inventory.GetItems(ITEM_POCKET.BERRIES)'.

Also includes all of the item icons. As well as all 251 Pokemon, named by id.
Completed the inventory class and fixed a few tired mistakes. Also added pocket and item flags to DataItem.
Added the ability to check for item flags.
Merge pull request #1 from Turbine1991/master

Duplicate code-quality commit as in other repository.