Do not generate invalid bitcoin addresses

Some private keys, such as 5JjXbt9zW9ZCLkn2bEjxzkQzpUr4XCQ38HjvjHkPuM1hCdNr4aS,
produce public address hashes with a lot of leading 0 bytes.
These bytes need to be encoded as 1's, which wasn't happening correctly.

In addition, correctly handle the case where somebody specifies a version
byte as a single digit. Before, a call like `hexToAddress $x 0` would
produce a different output from `hexToAddress $x 00`.