Cleanup and test all the things (plus ditching Crockford)!

So, I'm in the process of cleaning up the noVNC code a bit and adding in some unit tests, and wanted to see what people thought.

The most controversial change in here is the switch from Crockford-style constructors to a more normal Javascript type of constructors that support prototypal inheritance.  Since this exposes private methods (just hinting to the "user" that they're private by prepending an underscore), it makes certain things *much* easier to unit test.