Entity store refactoring (improve performance, etc)
Summary
Since the EntityStore will be the basis of pretty much everything, the performance should be good. This MR breaks useEntities up into smaller performant selectors/hooks which should reducer re-renders.
It also takes a schema instead of a parser now for validation, reducing boilerplate. Finally, I added tests for the reducer and made sure that error ends up in the state on fail (!2345 (comment 1312224607))