Only go to the mirror server if there is only mirrored versions of the package.

Previously, this would keep going as long as you had 1 version that was a mirror.
Added Logic to always go to mirror if the mirror is on the same machine or if the config value (alwaysCheckMirror) is set to true - default is false.
Partial revert of increased internal buffer size.  Increasing size is very expensive.

Instead, added an error handler to detect a InternalBufferOverflowException.

This is following the MSDN recommendations when using a filewatcher.
Cleanup PackageFileSystemWatcher.
Split AlwaysCheckMirror setting into subclass

Remove additional flag that checks if origin is on localhost.
(Users can already enable behavior with the config setting.)
Merge branch 'mirroring'