Add programs to Startup, Implementation of OpenWith and code enhancements/cleanup

Also, replaced foreachs with LINQ wherever possible, using regex in
Utils.ExtractFilePath, added #regions in MainWindows.xaml.cs