[[ Bug 13569 ]] Make sure changes to player in preOpenCard are not visib...

...le to the user
This will work, however the temporary hiding of the player is visible to, and can be affected by script operations. In particular - setting or getting the visible of the player inside the preOpenCard handler.

The MCPlatformPlayer will be created in MCPlayer::open() (in ::prepare I believe) - and at this point it is attached to the stack window (using MCPlatformPlayerAttachWindow) - this I think is the problem. I suggest doing the following instead:

Add a bool m_is_attached : 1; field to the MCPlayer.
Make it so the player does not attach in open, but ensures m_is_attached is false.
Add an 'attach()' and 'detach()' method to MCPlayer.
In the attach() method, attach the player to the window (if m_is_attached is false).
In the detach() method, detach the player from the window (if m_is_attached is true).
Before any messages are sent (as above) - call detach() on all players on the card.
After any message are sent (after openControls) - call attach() on all players on the card.

This means that the native view is not part of the stack whilst pre* messages are sent.