Distributed: Added ObjectManager support for client

Technical Description:
- Initial ObjectManager. ObjectManager simply keeps track of distributed
objects on the client. It currently handles adding distributed objects.
It will additionally handle editing and destroying them in the future,
but these are not yet implemented.
- ChatTest has a small example of using ObjectManager