Because `loadDynamicBackground` is called in `remoteImageDidLoad`, it
can end up flickering between all images as they are loaded from the
network. To fix this issue there is a now a small safeguard in
`remoteImageDidLoad` to evaluate if the image view is on screen,
otherwise just return early and don't switch out the background.
The `PageViewDelegate` has been slightly modified to return the image
view when loading remote images, that image view is used in the safe
guard mentioned earlier.
The `addìmageTo` now uses a weak reference to reduce the chance of
holding reference.
`addGradientLayer` now uses `@discardableResult` so that you don't have
to assign it to a variable when using the method.
The `goTo` method in `LightboxController` will no disregard the
animation if the controller is not on screen. This is done by checking
if the controller's view as a window or not.