Refactor base_uint

Refactor base_uint and misc. cleanups:

* Eliminate redundant typedefs and unnecessary classes.
* Reintroduce uint128, uint160 and uint256 as correctly-sized typedefs.
* Add tag support to base_uint to improve type safety and catch errors at compile time.
* Reduce base_uint public interface, eliminating duplicate functoins.
* Improve encapsulation by removing friend functions and using free functions instead.
* Remove some instances of BOOST_FOREACH.