[WIP] [RFC] Maintain index of assigned invlets

## What's this?
This code tries to maintain an index of invlet characters assigned to item stacks in inventory (note: not individual items).
This way I can substantially speed up ```inventory::stack_by_letter``` and ```inventory::item_by_letter``` methods. In my particular case of cheaty-PC with 2k of held items, waiting time before advanced inv or crafting screen showed up is decreased by a factor of 10 or so.
## Possible errors/missing pieces
1. This is tackling a problem from the wrong side, and maybe there's a better way to do it on a higher level.
2. There could be some other code paths which manipulate item invlets directly. Besides inventory.cpp I only found ```game::reassign_item```.

## Note
Profiling output which made me think about invlets:
https://gist.github.com/unikmhz/c045008deb8d49a57e93

Excuse me in advance if I'm posting total rubbish here, my C++ is super-rusty. Although this works for me, it might very well be unfinished/buggy/totally wrong. So please please, can someone test it and/or comment on the overall approach?