Switched the logic to use Created DateTime of package instead of
Published DateTime of the package

This is because, when a package gets unlisted, its Published is always
returned as '1900-01-01T00:00:00'. While this is useful to detect if
packages are listed or unlisted, it is not the best field to use since it
changes. Created DateTime, however, does not change. So, using that instead
Added a getter to DataServicePackageWithCreated called SemanticVersion which returns the explicitly implemented property 'Version' of type SemanticVersion. This newly added property across the code instead of using DataServicePackage.Version property which is  a string and the version may not be normalized
Also, added the main test cases as a list in the code. And, marked them as "COVERED" and "NOT COVERED"
Covered adding a package as unlisted
Covered Marking listed and unlisting packages
that are already present in destination
Added more logging for listing/unlisting packages
Changed the ListedKey to be a boolean instead of a string. And, more
Added logic to delete stale registration if the package
being deleted is the last version for the package Id
Delete and recreate temp folder after every iteration such that
when running the full mirror the temp folder never contains more than
40 packages and cannot run out of memory

Also, using SemanticVersion to compare versions instead of strings
Merge pull request #41 from NuGet/daravind/CreatedDateAndUnlistedPackages

Implemented listing and unlisting packages