FIX: `cvmfs_swissknife scrub` Crash on Malformed Hashes

`cvmfs_swissknife scrub` crashed because it called `shash::MkFromHexPtr` without making sure that `HexPtr` contains a valid hash representation. I added two methods to `HexPtr` namely `IsValid()` and `DetermineAlgorithm()`.
Now `cvmfs_swissknife scrub` can check if a `HexPtr` contains a meaningful hash and can print a warning on malformed hashes instead of blindly calling `MkFromHexPtr` and crashing. Nevertheless `MkFromHexPtr` still assumes a valid hash and crashes otherwise!

Additionally I adapted test case 542 to check for the new warning outputs.