Support the 'ExtendedDesktopSize' and the 'SetDesktopSize' encodings

Somewhat related to noVNC issue #117, but instead of scaling it is using the RFB protocol message 'SetDesktopSize' from the client to the server.

__Edit:__
This patch adds support in noVNC for the encodings 'ExtendedDesktopSize' (-308) and 'SetDesktopSize' (251). If the 'ExtendedDesktopSize' encoding is supported by the server, this patch allows for automatic resizes of the session shown in noVNC to fit the browser window. Note that the server still has the option of denying the resize request from noVNC.

When supported, this is a client-initiated resize. For this to work the 'ExtendedDesktopSize' encoding is required on the server. Aside from client-initiated resizes this encoding brings support from the server for multiple monitors (Note that mulitple monitors are not supported by noVNC). Documentation can be found [here](http://sourceforge.net/p/tigervnc/code/HEAD/tree/rfbproto/rfbproto.rst#id88).

The resize is triggered by changes to the browser window's size. Note that this will have the effect that if multiple viewers are connected to one session on the VNC server the latest change will decide the size of the session as viewed on all clients.

The 'ExtendedDesktopSize' encoding is fairly new to the protocol and I know that many VNC servers have not yet implemented this, but I do know that TigerVNC's server have implemented it.

Summary:
* This requires the VNC server to support the 'ExtendedDesktopSize' and the 'SetDesktopSize' encodings.
* Automatically resizes the session to fit the browser window
* TigerVNC's server have the required encodings.

Yeah.. first of all you need a VNC server which supports the ExtendedDesktopSize encoding. Then you need the functionality that this PR is supposed to give. As I mentioned here, this function works but sadly it breaks the viewport pan function.