Added an Item_manager class, and the global item_controller to reference it's only instance.

It is fully initialized as part of game.cpps initialization step, and doesn't do much for the moment aside from providing another way to access the same information already accessed through the itypes map. However, it lays the groundwork for additional changes.

To insure proper functionality, calls to itypes in wish.cpp now use the new item_controller.
Merge branch 'master' into add_item_manager
Added the ability to ask the itemm_controller for a random id or itype from a group.
Merge branch 'master' into add_item_manager
Changes to item_manager. Added consts where possible, some more randomized access options, and swapped the test in npc.cpp for one in mapgen.cpp

The new options allow you to draw either a random id or random template from a group tag. Also nested those properly to avoid code duplication.
The last bit was thanks to the fact that the number of npc bugs makes it ineffective as a test... and there's no way to see if it even works.
Added ability for item manager to read in item from file and create it.
Symbol loading works properly, shuffled a few things around.
Expanded the item loading system to handle materials as well, and added a melee file with a HATCHET.
Merge branch 'master' into add_item_manager
Added actual item creation methods to the manager.
Added the Item_group class, and related subclasses, for handling grouping items with frequencies.
Added a file for group definitions, and the ability to read them in and use them.
Added reading in of item groups from group definition files.
Merge branch 'master' into add_item_manager

Conflicts:
	game.cpp
	mapgen.cpp
A bit of clean up. Fixed some warnings, removed an unused method.
Mapgen now spawns using the item factory. Re-added accidently removed line that loaded in existing items from item file.
Renamed Item_manager to Item_factory, removed extraneous typedefs, cleaned up some details.
Stop the monster list from being edited while we're iterating
Remove obsolete debugging check

That check won't be doing anything, since i is never modified in the loop. i.e., its sole effect is to make sure that the compiler's for (...) implementation is sane.

Also, it needs i >= z.size(), not i > z.size(), anyway.
Show note symbols on the minimap. Closes #508