Avatar simulate optimisation

Don't recompute the transform and the rotation if the local and parent transform didn't change.
extractRotation being what takes most of the time in otherAvatars/simulate, avoid calling it when it is not necessary.
Good points ZappoMan.  I'm reluctant to throw more stuff at different threads since we've got so much already, and I worry about race conditions where we use a _rotation that hasn't yet been updated.

Another way to go: the _rotation data really is duplicated in the _transform.  Rather than compute it in another thread perhaps we should only compute it (and cache it) when we actually need it.  So, add another bool called  _rotationIsValid and only ever use getRotation() internally rather than accessing the variable directly. getRotation() could check the validity and either supply the cached value or extract it.