Code cleanup: reorganizing the code so we can support different
comparison strategies
Added code to support different comparison strategies
Renamed the version comparator so we can extend version comparison code
Slightly improved the support for version slots
Added unit tests for the slot comparators
Fixed the SlotComparator signature because we don't need to assert
whether any given version is bigger than the other. We just need to
assert whether 2 different versions are in the same slot.
Added comments
Fixed method signature: it should be private, not public
Added code comments
Added support for reading package file information during search
Fixed test cases