Added context ctor that takes a const surface&. This is not good. Next should be having a surface return a context that will draw to it, which is how this should work. Then the badness here can be eliminated.
Revert "Added context ctor that takes a const surface&. This is not good. Next should be having a surface return a context that will draw to it, which is how this should work. Then the badness here can be eliminated."

This reverts commit 696e3b2af32475fba965aa44844da571c868c40d.
Moved context into surface. Added surface::get_context. Changed the type of the surface in Win32RenderWindow to be image_surface for debugging purposes. Miscellany changes to deal with the change from constructing a context to getting a reference to a context from the surface.