This adds support for uint256 multiplication (modulo 2^256) along with
associated tests to ensure proper functionality.
It includes multiplying a uint256 with an existing one (a *= b),
multiplying two uint256s and assigning the result to a third (a = b *
c), and multiplying an existing uint256 with a uint64 (a *= uint256(b)).
This is part of a series of commits to fully implement the uint256
package.