Using an opaque struct to hide the implementation details of the window

|SOURCE|
[Linux/Window]
* The class member variables are wrapped up in a WINDOW_DATA struct to allow
  for abstractions of the Window class to be made further down the line