Both PairChecker and AttributeContainerChecker factory functions
modified to return more generic AttributeCheckers similar to other
attribute types. By removing the templated return type, the internal
templated classes become necessary to define checkers for each
templated type. This follows the pattern in PointerChecker and
ObjectContainerChecker.
The pair-value-test-suite and attribute-container-test-suite were
amended to account for the changes in the checker factories. All
tests continue to pass.
Plenty of documentation was added to PairValue and AttributeContainerValue
and I also removed some dead code.