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)
Eliminate inventory::remove_item_by_quantity
Eliminate (unused) inventory::remove_item(int, int)
Convert inventory::remove_stack(int, int) to use invlet
Convert inventory::remove_stack(int) to use invlets
Remove inventory::index_by_letter

Sort of a hack in two places, but those functions should be rewritten *anyway*.

Only one more inventory method that uses index! Woo-hoo!
Remove inventory::operator[]. No significant old indexed functions!

Well, that was a doozy. Finally got inventory::operator[] excised. Some stuff is still using slices (in particular, UI and AI), and those should probably be moved into friend classes or something at some point.

Now time for testing.