Revert "HACK - punt drawBackground to be later"

This reverts commit 14f8498a1a6a6a3bee5b6a6508a460c2b2ba0523.
Move drawWithContext to the server and update clients

We can't pass objects or functions through postMessage, so let's
just do drawing out of band for now. In the future, we might have
specialized core drawing requests like the actual X11 protocol has.
Don't support null server clients during grabs

This was part of the bad implicit grab implementation.
Make serverClient private
Correct ungrab when becoming unviewable

This was bad.
Remove some old checking code

This isn't necessary.
Update some comments
Send events through the ServerClient

Since we want to have events go through a port,
we need to be sure we use the correct client's port.
Remove bad inheritance

ServerGrabClient shouldn't be-a ServerClient, since it has
one internally, and we fake the interface.
Remove ServerGrabClient.selectInput implementation

Not really helpful.
Move event delivery to a port

Introduce a new "port", backed by an iframe, over which
we send messages. The eventual goal is to move all
communication to ports, so that we can put each client
in a Web Worker.

In the future, I may want to use MessageChannel/MessagePort
directly... once that becomes better implemented, that is.

This causes the standard async redraw issues. I'll try to fix
it soon, I swear.