Item interface improvements, rewrite of hairy game::list_items() function

Two item-related interface additions:

1. The game now tells you in the message log when worn items are damaged in combat.

2. When looking around at nearby items, you can now press "E" to bring up a bit more detail (in particular, you don't have to pick up items to read their description - handy for heavy/bulky things!). I'd like to expand the available detail in that window a bit more, over time.

Additionally, I rewrote about half of game::list_items(). Of particular note: I pulled the filter code out of the relatively hot drawing loop, which should take care of a TODO in the code about speeding things up; I replaced some gnarly tripled-nested std::map with a std::vector and a new struct; and I pulled several things into their own functions. Partly so they can be reused, but mostly because the function's line count was too damn high.