Change GetFooComponent() to Get<FooComponent>()
Make all functions that return pointers return references instead
Make the components embedded in the entity instead of being allocated separately