ThemeManager improvements without braking change

this pr is a preparation for #1151 Added support for changing the theme base for an application ( @Tide )

- add MetroTheme class (works like Accent class)
- add DefaultMetroThemes property to ThemeManager (so users can add
there own themes)
- overload some methods to work with new and old one
- more helper methods 

with this it's possible to add different light/dark themes

```csharp
private void LoadThemeBases()
{
    var programDirectory = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);
    if (programDirectory != null)
    {
        var themeBaseDirectory = programDirectory + @"\ThemeBases";

        if (Directory.Exists(themeBaseDirectory))
        {
            var grayLightPath = Path.Combine(themeBaseDirectory, "GrayLight.xaml");
            var grayDarkPath = Path.Combine(themeBaseDirectory, "GrayDark.xaml");

            if (File.Exists(grayLightPath) && File.Exists(grayDarkPath))
            {
                ThemeManager.AddAppTheme("GrayLight", new Uri(grayLightPath, UriKind.RelativeOrAbsolute), Theme.Light);
                ThemeManager.AddAppTheme("GrayDark", new Uri(grayDarkPath, UriKind.RelativeOrAbsolute), Theme.Dark);

                ThemeManager.ChangeAppTheme(Application.Current, "GrayLight");
            }
        }
    }
}
```

![2014-03-24_23h40_41](https://f.cloud.github.com/assets/658431/2506317/5d2f95c2-b3a5-11e3-978d-65848c28dd44.png)

Closes #1151