Window open/close/show

Window opening is working as best as I can get it at this time. The
behaviour in CEF is very different from the others in a number of ways:
* It does not really have full support for providing the window ourselves.
  So when the window is set by one of the open listeners CEF will treat
  the open as cancelled and the window.open will return null in the
  browser. The window will however open.
* Additionally CEF does not provide a show callback so this is done
  manually from the windowCreated method.
* Finally the popup features struct is not currently populated by CEF3
  this is documented by issue 520 on the CEF project. It currently
  contains all 0s and we process them anyway. Also we are storing a
  reference to the popup features outside of the on before popup callback.
  The API docs warn against this. As of yet there is no issue with doing
  so but it is something to bear in mind in the future.