Adds company method; extracts out FlatStore

This is a work in progress but it adds initial support for a singular "company" method on User. It also extracts out a separate class from what was called CustomUserData since both this and the new company features act the same way.