First Approach to a cvmfs_swissknife scrub command

This contains a new `cvmfs_swissknife` command `scrub`, that go through a given repository backend storage to check for possible corruptions.
Currently it detects:
* files with malformed names (xx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy[C|X|H|P])
* unknown file name suffixes (other than C, X, H, P)
* symlinks (that are not supposed to be there)
* mismatch between content hash and file name in CAS

**Note:** this contains [Use Hash Abstraction API in File Processing Classes](https://github.com/cvmfs/cvmfs/pull/247)
**Note:** this contains [Refactoring of the Asynchronous Reader](https://github.com/cvmfs/cvmfs/pull/246)
**Note:** this contains [Add Unittests for new components](https://github.com/cvmfs/cvmfs/pull/245)
**Note:** this contains [Integrate the TBB based file processing into the Spooler](https://github.com/cvmfs/cvmfs/pull/244)
**Note:** this contains [New File Processing Pipeline based on TBB](https://github.com/cvmfs/cvmfs/pull/243)