Don't delete non-dgroups groups when empty
DGroups really is first class now

Groups configuration is now done entirely by DGroups. The default behavior is
the same as before, but the DGroups configuration API is now much simpler.
update tests
s/DGroup/Group; s/Group/_Group
CHANGELOG++
Rearrange configuration objects a bit

There are several motivations for doing this:

* manager.py was huge, so anything that makes it smaller is a Good Thing.
* There are at least two hacks around circular dependencies which are removed
  by this commit. (There are still more which could probably be resolved, and
  hopefully those can be addressed without config breakage now.)
* With the dgroups refactoring, the config objects were sort of spread out
  everywhere; it's useful to have them in one place.

Full documentation is available in CHANGELOG or the docs, but a:

    sed -i -e 's/libqtile.manager/libqtile.config' config.py

should work for most people.
Fix tests

Added a temporary hack to map name in widget configs. This will go
away when we merge in some reasonable defaults mechanism.
fixed delete_client logic

delete the group if it is empty and dont persist

Closes #243
Update default_config.py

...for recent change to textbox widget.

Closes #244
Really fix tests this time :-)
Add a newline when qsh is exited via ^D, ^C
Log level defaults to ERROR

Also added a config option log_level to set the logging level to any of:
logging.{DEBUG, INFO, WARNING, ERROR, CRITICAL}

Closes #246
Add Key commands to the Notify widget.

Keys can me bound via lazy.widget['notify'].toggle()

Closes #245
added hidden threshold support to battery widget

@tych0: removed unused constant, closes #247
Config is not used in qsh and Client

Closes #252
Only initialize default config when necessary

Closes #251
Provide context when using the addgroup and delgroup hooks.

- before

def main(qtile):
    @hook.subscribe.addgroup
    def goto_group():
	if hasattr(qtile, 'currentScreen'):
	    qtile.groups[-1].cmd_toscreen() @hook.subscribe.addgroup

- after

@hook.subscribe.addgroup
def goto_group(qtile, name):
    if hasattr(qtile, 'currentScreen'):
	qtile.groupMap[name].cmd_toscreen()

Closes #248
CHANGELOG++
Really fix #251

Python doesn't have lazy semantics :-)
Fix typo