Improved widget state change callback system

  - State change callback gets called when children get added or removed
  - State change callback gets called when the parent changes
  - State change callback gets called when the canvas changes
  - Flags are used to make clear what happened
  - Frame widget no longer needs a special function to add children,
    children are added normally and the state change callback takes care
    of the scrollbar
Moved pixmap creation to canvas and added abstraction

  - Pixmap code uses abstract pixmap data type
  - Canvas is used to create pixmap
  - Pixmap is only valid for canvas it was created on
Removed default OpenGL context sharing of all contexts

  - By default, all OpenGL contexts were created to share data with each
    other to implement pixmaps that work on every canvas of the same type
  - This is no longer needed now that pixmaps only work on one canvas
  - Functionallity to let the user decide about context sharing will be
    added in the future
Added window description structure for window creation

  - window_create function just takes a few simple parameters and sets
    up a window description internally
  - window_create_desc takes a window description and is implemented in
    the backend
  - The parameters of the create function can be extended by simply
    adding fields to the description struct instead of forcing everybody
    to use a load of arguments when creating a window
Added frame buffer description to window description structure