A lightweight, lazily-allocated key/value store for stashing arbitrary typed data on an object.
The backing dictionary isn't created until you store something, so empty bags are essentially free.
Not thread-safe - use it from a single thread (usually the main thread).