Add a new Visibility component that will eventually allow scripted components and mods to influence an entity's visibility.
This first commit only refactors code and does not add any new feature.
Refs #2913 (see this ticket for more information about the change)