rename: Digest<>::MakePath(int, int) to ::MakePathExplicit()
rename kSuffix* to kAlgorithmIdentifier*
use kSuffixNone constant
annotate hashes throughout the system
replace FileChunk::kCasSuffix with shash::kSuffixPartial
rename shash::Digest<>::modifier to ::suffix
strongly type hash suffix

Conflicts:
	cvmfs/catalog_traversal.h
add crutch method MakePathWithSuffix(shash::Suffix)
FIX: rename kAlgorithmIdentifier
Merge pull request #602 from reneme/refactor-use_hash_extension

Refactor: Use Hash Extension - Suffix Annotation

This adds hash annotations to hashes being instantiated throughout the system. The usage code of those hash objects is not changing in most cases. Except the method `MakePath()` is now called `MakePathExplicit()`.

In some case, the hash suffix was already abstracted with a variable. Here I needed to use a crutch called `MakePathWithSuffix()` that checks for `suffix != shash::kSuffixNone` and adds the right char accordingly.

In the long run, I will remove most (probably all) calls to `MakePathExplicit()` by the convenience method MakePath(), that does hide some path details currently spread around the whole system. Like this:

    shash::Any catalog_hash = MkFromHexPtr(shash::HexPtr(manifest.root_hash), shash::kSuffixCatalog);

    // current usage (cumbersome call with unnecessary knowledge of path structure)
    const std::string path =  "data" + catalog_hash.MakePathExplicit(1, 2) + "C"

    // planned usage (path structure is fully encapsulated)
    const std::string path = catalog_hash.MakePath();