Initial commit.

Allows for:
 - Simple enumeration
 - Size limited bags
 - Type limited bags
 - Fetching stacks of matching items by predicate or type
 - Fetching the entire bag in stacks
 - Putting bags inside bags
 - Flattening sub-container bags into a single container