workspaces: handle move to workspace
add, remove window: abstract functionallity further

add `addWindow()` and `removeWindow()` functions, that figure out on
their own, wether they are deleting the master or a stack window. this
way the window manager doesn't have to do this every time he wants to
add/remove a window
workspaces: now hold their index, as seen in gnome
code: abstract workspaces into seperate class
code: reorder code
tiling: support mfactor, also supprts mfactor/workspace
extension: fix cleanup code
shell: support multiple workspaces
tiling: rotate the stack
code: abstract remove and add window to own methods
tiling: support removing windows
adhere to styleguide and add comments
initial, spawning works