Adding C4VisibleObject protocol and implementation

These will become the default structure for visible objects, I'm
basically going to copy over the functionality of C4Control.