Significantly refactor so the code can support ownership on stackable items, however only enable only on single stack items by default
- can be applied to individual stackable items through `ItemDefinition.supportsStackableOwnership`
- transfers ownership between item stacks when merging stacks instead of averaging it
- ownership is stored in whole number shares based on the amount of the item rather than percentage per stack
- ownership will try to merge with existing ownership names + reasons before creating new ones
- ownership panels above item description can show multiple panels if there are multiple owners