Presentation window: new message exchange to detect receiver readiness

To detect whether the shim is running in a presentation receiver app, the shim
sent a "receiverready" message to the opener window (if it existed) and waited
for a "presentation" response message. It then called "presentation.onpresent"
to tell the code in the receiver app about the presentation session.

From a sender perspective, the code assumed that the receiver side was ready to
rock upon receipt of the "receiverready" message and immediately started to
send commands to the receiver app.

The problem is that there could be a slight delay between the time when the
receiver app sent the "receiverready" message and the time when it actually
called "presentation.onpresent". The first commands send to the presentation
session could be lost as a result.

From a receiver perspective, the shim now sends a "ispresentation" message to
ask the opener window if it is running in a presentation session, waits for
a "presentation" message in return, runs "presentation.onpresent" and then
sends a "presentationready" message to the sender.

From a sender perspective, the shim now waits for the "presentationready"
message before it considers the window presentation session to be fully
connected.