Don't cache NSScreen objects as they maintain invalid state

When screen parameters change (e.g., plugging in an external monitor) it can
cause changes in the coordinate system of displays (i.e., a different monitor
can become the screen set at the origin). I previously fixed a bug that did not
take this coordinate change into account, but there was a second caching
bug. Screen managers cache their screen object, which in turn seems to cache the
frame. When screen parameters change and the coordinate system changes, these
cached screen objects become invalid, so we have to update the screen held by
the screen manager.

This should actually fix #238 and #230