Slight restructure of controller. Moved some essential layouts to core
Some restructuring around event handling and current hotkeys

 - Untile hotkey assigns empty layout to all windows
 - When assigning a new layout, windows are not automatically redetected.
 - This is in preparation for future functionality where events are always
   passed down to layouts/tags and should therefore always have a consistent
   state.
Implemented a toggleable tile mode.

 - When a layout is set, it is retiled upon receiving events (eg move, size)
 - When the untile hotkey is pressed, an empty layout is assigned which does
   nothing when tiled and so appears as per normal.