This allows new types to be added without any fuzz (no need to specify
the traits) if it has operator>>. It also removes the need to manually
specify the ArgTrait for all built in types (such as long, bool, char,
float etc).
ArgTraits now works in the following way:
1) If there exists a specialization of ArgTraits for type X, use it.
2) If no specialization exists but X has the typename
X::ValueCategory, use the specialization for X::ValueCategory.
3) If neither (1) nor (2) defines the trait, use the default which is
ValueLike.
easier to make you own classes, and types defined in the standard
library work well with tclap. I'll try to write up some documenation
of how to achieve this as-well.