Item refactoring, level gen tweaks

- items are all stored in arrays, not a massive if statement
- random item creation is now handled by the item's class, not the caller
- storage units now generate in the world