Add the Map Collection to QL

(User Story, Investigate , Priority: Critical, Test Status: No automated tests yet , Reported By Bad Link: Thing 3y284oe not found, )
Summary: This is a huge feature, and would be significant effort to add, but it's generally useful, and I've been thinking about it since the early days.
Note that there'a a sort of poor man's Map already implemented and used internally, so this isn't entirely insane. Strictly speaking, we could do this as a wrapped Type, rather than a whole new Collection; that would bring the scope down to saner levels, although it's conceptually kind of wrong.
Either way, though, this would require significant UI enhancement in order to make it usable, both in terms of display and editing, and probably a bunch of functions to make use of it.
A couple of concrete use cases from Eric, as some good motivation:
I'd like to roll my own "here are Things that have comments you haven't read yet" system - basically, do the standard forum thing of displaying the most-recently-commented-on Things (easy) along with how many of those comments are New since the user last viewed the Thing. I can do the latter by storing every Thing view, but it would be way better to just have a Map of (OID => Datetime) in the user's profile.
I'd like to roll my own bookmark system. Doing a basic one is straightforward from a data POV - each user profile has a Set of OID corresponding to their bookmarked Things. However, if I wanted any more detail - eg, not just a simple "bookmark" boolean, but something that could be "Favorite", "Watch", or "TODO" - I'd need a map of (OID => enum).