Refactor cvmfs_swissknife to use PolymorphicConstruction<>

This refactors `cvmfs_swissknife` to use the `PolymorphicConstruction` template for its plugin handling and creation. It uses the [formerly introduced](https://github.com/cvmfs/cvmfs/pull/381) `Introspect()` method of `PolymorphicConstruction` to do parameter checking and help message printing based on the registered plugins at runtime.

Additionally this adds convenience factory methods to the `Parameter` wrapper class (`Parameter::Mandatory()`, `Parameter::Optional()` and `Parameter::Switch()`) to hide some flag magic.