Add a BCD integer

This type was originally created to provide O(1) access to each integral digit for permutation-related problems in project Euler. It has turned into an exercise in how closely such a type can be turned into a number-like value type.