Additional features and minor overhaul of windowing code
* Added open(), close(), isOpen() methods.
  These create, destroy, and check if the window has been created yet, respectively.
* Added setResizable() and isResizable() methods.
  These control and check if the user can resize the window, respectively.
  Windows are not user-resizable by default.
* Added setAutoClose() and getAutoClose() methods.
  If auto-close is enabled, when the user attempts to closes a window (e.g. by clicking the close button in the title bar), Brimstone will automatically call window.close().
  This feature can be turned off in the event that you want to handle this event in a custom fashion.
  Windows do not auto-close by default.
* Added setMouseCapture() and getMouseCapture().
  These two methods set/get whether mouse capture is active for the current Window or not.
  When mouse capture is on, the Window will receive mouse events occuring outside of its client area.
  Mouse capture is only meant to be used temporarily (e.g when dragging the mouse).
  You should turn it off after you no longer need to capture the mouse.
* Added screenToWindow and windowToScreen.
  These methods convert screen coordinates to window coordinates and vice-versa, respectively.
  Window coordinates are relative to the top-left corner of the Window's client area.
* setVisible() now shows and hides the window instead of opening / closing it.
* setPopup() now works on open windows.
* The following functions use return values instead of output parameters now:
  - getTitle()
  - getBounds()
* Renamed a couple methods:
  - getPopup   -> isPopup
  - getVisible -> isVisible

Added support for four new window events:
* WindowFocus:  Triggered when user switches from some other window to this window
* WindowBlur:   Triggered when user switches from this window to some other window
* WindowMove:   Triggered when the window is moved
* WindowResize: Triggered when the window is resized.

Window implementation is no longer exposed to the client

Minor overhaul to loggers.
* Loggers::add now takes an std::unique_pointer.
  The Loggers class now manages any registered loggers, and deletes the logger when it is no longer needed.
  This method returns an ID that can be used to remove the logger if necessary with Loggers::remove.
* You now provide STL strings to the various logging functions (logInfo, Loggers::write, etc) instead of a C-style string.
  This has resulted in slightly more concise code (e.g. instead of passing .str().c_str(), you can just do .str() now).