Couple of typos fixed
Use a std::list instead of a std::vector to store inventory items
Remove reference-mangling player::sort_inv() voodoo

Refactor the inventory sorting code so that it no longer mangles references (thanks to using std::list now).

Also move logic into the inventory and item classes, rather than being in player.

Note that inventory::sorted never seems to be *used*...
Improve readability of item sort code, stop flip-flops
Change inventory::restack to not mangle references
Unload no longer requires wielding the container/gun (closes #503)
Remove unused inventory methods "front" and "back"
Remove some calls to inventory::index_by_letter
Add some more inventory letter methods, remove more inventory::index_by_letter calls
Remove unused inventory::as_vector method
Remove inventory::stack_at(index), move some code into inventory
Fix massive slowdown when firing weapons/calling u_see

Well, thanks to profiling tools, I found out that u_see was calling has_artifact_with, which was using O(n^2) operations on the new list-based inventory. Move relevant code into the inventory class.
Fix new multidrop bug (shallow copy getting out of sync with the original)
Get rid of inventory::remove_item(int index)
Fixed `itypes` related crash in construction menu

Similarily to `crafting.cpp` construction menu ran into a null pointer dereference and crashed the game. It's fixed now by using `item_controller` instead of `game->itypes`.
Fix potential crash with reading from empty string
Add parentheses to silence compiler error - these were almost definitely bugs
Minor cleanup to determine_terrain_with_simple_method -some other compilers choke on this
Fix class/struct definition mismatches
Fix some incorrect types