Changes for concurrency.

This splits up the window into two parts, one for rendering (`RenderWindow`) and one for everything else (`ConcurrentWindow`). It then implements `GameWindow` in terms of `RenderWindow` and `ConcurrentWindow` to avoid code duplication. 

Because `ConcurrentWindow` needs to implement the `GameWindow` trait to be used with a `GameIterator` it has a `swap_buffers` method that does nothing. If someone has a better way to do this please tell me (Let's keep discussion about that on the piston issue though).