Improve implementation of create_shared and turn it into a method

Window::create_shared is now a method on &self. Call it to break off a new shared window.

Internally Window::{create, create_shared} both use a new function Window::create intern that takes an Option<&Window> for the shared context. This means that Window::create does not need to make an empty window for the supplied shared window parameter.