Use real abstraction for layouts:
* Set Layout metaclass to abc.ABCMeta
* Layout's methods that are decorated with @abstractclass must be implemented in
  every layout, so when looking at layout.py, we can know easily what method can
  be used safely everywhere
* Implement those abstract methods on layouts that don't already have them
Make Slice and Single respect Layout abstractmethods
+ fix a small omission on renaming "focus_prev" to "focus_previous"
Standardize layouts and their commands
* Removed focus_first and focus_last on SingleWindow, so every child class must
  implement those two;
* Make EVERY layout working with group.{prev,next}_window, and give hand back
  to floating_layout when the last window of the layout is called;
* Make EVERY layout working with layout.{prev,next}, without giving hand back;
* Standardize implementation of window lists and movemements related: layouts
  must not shuffle their list but have a reference to the current focused
  window, otherwise focus_first and focus_last could not exist;
* Standardize focus_next and focus_prev implementation so that it returns a
  window or None if at the end of the list (so that group.{prev,next}_window can
  switch to the floating layout);
* Changed few tests to make them more pertinent / working with those standards.
Fix whitespace and remove redundant function calls

Closes #407