shiny/driver/windriver: rename the utility window to the Screen window and rewrite it in Go

Because SendMessage on Windows switches to the thread the
target window is associated with to send the message, we can
safely send messages to windows across threads. As such,
methods on a screen.Window can be implemented by sending
messages to that window directly. This laves the so-called
"utility window" only managing the screen.Screen methods.
Therefore, we rename it to the "Screen window" here, as that
is its function now: providing a thread-safe way to call
screen.Screen methods.

The Go rewrite has the side effect of simplifying the error handling
of Windows API calls a bit.

Some common data-related routines have also been added.

The actual work of creating a window is still done by C.
That will be addressed in the next CL.

Change-Id: Ibe46a57891c34da0e9534d5ab6d19aeb6076e638
Reviewed-on: https://go-review.googlesource.com/13963
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
8 files changed