Allow passing SCREEN_SIZE to Xephyr and flags to qtile
Default to setuptools but don't fail if it's not available.

Closes #411
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
Fix battery widget : Display Error

...instead of Full if the widget is not able to get the battery status

Closes #409
allow tiled windows to be moved with the mouse

Closes #410
Pseudoscreens with same x and y share Screen

Pseudoscreens with the same x and y coordinate will not be assigned
their different screens. Rather, a single screen will be created with
the largest width and height of the pseudoscreens sharing the same
origin. This resolves issues when cloning displays, as both Screens
would occupy the same location, and maneuvering groups in this
configuration was tricky.

Resolves #378
Fix setting origin of second Xephyr display
Add tests for cloned displays

Closes #383
Screens should be listed in offset order

...starting from smallest to largest; this fixes various things like to_screen,
among others.
Custom layouts list argument for config.Group

Closes #402
All widgets that poll state use a common interface

There are two kinds of polling: polling that takes a long time (e.g.
yahoo_weather, bitcoin_ticker, etc.) and polling that doesn't (e.g. local
filesystem polling). You really don't want to have to think about which widget
does which kind of polling, you just want to write your widget logic. This
commit makes that a reality.