[Ready] Item access refactor

See #9517
The reason I am trying to get modification wrapped is to be able to create hooks for it. Simple example: Modifying the brightness of an item could trigger a lightmap recalc. It's not entirely necessary, what is necessary though is having hooks for item addition/removal. Unfortunately there is no std::vector where you can't add/remove items, yet can modify the individual items. So I needed "something else", and BevapDin's idea of creating a custom container seemed fair enough.

Anyway, I really don't have the time to be rewriting and rewriting this until you're pleased, so for now I have no interest in working on this anymore, sorry.