ref-counting vcl::Window subclasses

Points of discussion
--------------------

(*) where in the Window destructor should dispose() be called?
   It's a seriously large method.

(*) we're going to need similar typedefs and declarations for every
single sub-class of vcl::Window, I assume that I will need to create a
macro to make it less verbose.

TODO
----

Update clang plugin to verify that:
(a) dispose() methods always call their superclass dispose()
(b) dispose() methods don't forget to clear any references owned
    by that class.

Change-Id: I873d5d5166f811e2f65e49327cc98862559fcf30