Fix package sources processing

This changelist contains the following fixes/changes:

- The most important one is that priorities are taken into account when processing
  <disabledPackageSources> & <packageSources>. E.g. source "a" is added in config file
  c:\a\b\nuget.config, and "a" is also listed in <disabledPackageSources> in file
  c:\nuget.config. Since file c:\a\b\nuget.config has higher priority than c:\nuget.config, source
  "a" should be enabled. Without the fix, it's disabled.

- Added property IsPersistable to handle sources that are added automatically but should not be
  persisted. E.g. VSExpressForWindows8Feed, v3 preview feed.

- Fixed MockFileSystem to behave more like PhysicalFileSystem so that nuget code does not need to
  work around its limitations.

- Fixed many unit tests to use less mocking.