Fixed / Simplified Version comparison for MPEI

The version comparison for TvServer had the min and max conversion
reversed. I think this was partly due to the CompareTo function making
the code cryptic to read. Refactored all the version comparison code
into a new VersionProvider abstract class and implemented operator
comparison overrides in the VersionInfo class.