[WIP][RFC] ThemeManager improvements without braking change

this pr is a preparation for #1151 Added support for changing the theme base for an application

- 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

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.DefaultMetroThemes.Add(new MetroTheme("GrayLight", new Uri(grayLightPath)));
                ThemeManager.DefaultMetroThemes.Add(new MetroTheme("GrayDark", new Uri(grayDarkPath)));

                ThemeManager.ChangeMetroTheme(Application.Current, "GrayLight");
            }
        }
    }
}
```