HaikuWindow: Make use of BWindow::DispatchExternalMessage()

Calling BWindow::DispatchMessage() from DispatchDelayedMessage() works
in principle, but [Detach]CurrentMessage() wouldn't work from the
handlers. This fixes the button behavior when leaving the button bounds
while holding the mouse button pressed.
HaikuCheckButton: Add "grayed" support
HaikuUtils: Add JNIEnv param to {From,To}JavaString() methods
HaikuUtils: Add ThrowSWTException()
Haiku: Add rudimentary Image support

Only the file name constructor has been implemented.
Haiku: Button: Support setting an image