Base uint

Improve and refactor `base_uint`:

* Reduce class clutter by removing unnecessary derived classes.
* Consolidate multiple implementations of arithmetic and comparison operators.
* Tag support helps provide self-documenting semantics, improves type safety by catching type mismatch errors during compilation.
* Small assorted cleanups: reduce use of `BOOST_FOREACH` and leverage `auto`