uint256-based hash_number

I agree that bitcoind code is written poorly and in particular uint256 is a black box.

But here's my rationale for this decision:
* We can migrate away from OpenSSL sooner rather than later.
* Adds a class where the implementation can be upgraded seamlessly.
* When/if we choose to migrate to something else, we will have hash_number to compare against for test cases.
* I know it will work.
* Both GMP is a black box, and this code is a black box
* I don't want to spend too long on this stuff right now. Got other priorities (blockchain).