Fix retain cycle by CADisplayLink retaining target.

- displayLink getter will invalidate the displayLink if there is no superview. It will create one if there is none and is needed.
- The methods `- (void)didMoveToWindow` and `- (void)didMoveToSuperview` ensure displayLink creation and invalidation.
- To avoid invalidation and creation when moving parent views or windows, the methods to invalidate are called in the next cycle.