Prevent MPD widget from crashing on missing metadata

Closes #296
readded the option to set master and ratio for tile from Dgroup
move dgroups inizialitation to a method, to allow dynamic adding
fix exclusive, instrusive, and not persistent groups in dgroups
moved rules from Group to dgroups_app_rules and moved Rule to config

this rules makes no sense in the group object becouse they are group
independent.
config example:

dgroups_app_rules = [
        # Everything i want to be float, but don't want to change group(intrusive)
        Rule(Match(title=['nested', 'gscreenshot'],
                   wm_class=['Gcr-prompter', 'Ghost',
                        re.compile('Gnome-keyring-prompt.*?')],
                   wm_type=['dialog', 'utility', 'splash'],
                   ),
            float=True, intrusive=True),

        # floating windows
        Rule(Match(wm_class=["plugin-container", 'Gimp', 'Wine', 'Xephyr']),
            float=True),
        ]
fix deletion of groups when len(groups) -= 1+len(screens)
Remove layout specific code from dgroups
Add Matrix layout

Closes #299
Update pacman.py

Checkupdates is a non-sudo way of checking for updates as using pacman -Qu
only checks for out-of-date packages with your local package list. Pacman -Su
updates the package lists but requires sudo access to do so.

You could have a cron job that updates the package lists and then pacman -Qu
would suffice.

Closes #301
patch for iss300
Change the window's layout level behavior
When focusing on a window, bring it to front.
Floating(but not maximized or fullscreened) windows always on top.