Change property events to be more coarse grained

This is the start of larger set of changes to move to a more event driven graphics update loop, rather than the polling we do now.