Crypto: update checked addition functions to use new intrinsics.

This change gets rid of the call to leading_zeros() and replaces it with a
simple integer comparison. The leading_zeros() method results in a ctpop LLVM
instruction and its unclear to me how efficient that instruction is on all
architectures; integer comparisons, however, are efficient on all relevent
architectures.

before:
test sha1::bench::sha1_10 ... bench: 74 ns/iter (+/- 0) = 135 MB/s
test sha1::bench::sha1_1k ... bench: 6154 ns/iter (+/- 57) = 166 MB/s
test sha1::bench::sha1_64k ... bench: 392056 ns/iter (+/- 2536) = 167 MB/s
test sha2::bench::sha256_10 ... bench: 82 ns/iter (+/- 3) = 121 MB/s
test sha2::bench::sha256_1k ... bench: 6789 ns/iter (+/- 79) = 150 MB/s
test sha2::bench::sha256_64k ... bench: 431722 ns/iter (+/- 6228) = 151 MB/s
test sha2::bench::sha512_10 ... bench: 56 ns/iter (+/- 1) = 178 MB/s
test sha2::bench::sha512_1k ... bench: 4414 ns/iter (+/- 33) = 231 MB/s
test sha2::bench::sha512_64k ... bench: 280875 ns/iter (+/- 3053) = 233 MB/s

after:
test sha1::bench::sha1_10 ... bench: 72 ns/iter (+/- 1) = 138 MB/s
test sha1::bench::sha1_1k ... bench: 6126 ns/iter (+/- 62) = 167 MB/s
test sha1::bench::sha1_64k ... bench: 391137 ns/iter (+/- 4729) = 167 MB/s
test sha2::bench::sha256_10 ... bench: 79 ns/iter (+/- 1) = 126 MB/s
test sha2::bench::sha256_1k ... bench: 6737 ns/iter (+/- 96) = 151 MB/s
test sha2::bench::sha256_64k ... bench: 432411 ns/iter (+/- 3791) = 151 MB/s
test sha2::bench::sha512_10 ... bench: 56 ns/iter (+/- 0) = 178 MB/s
test sha2::bench::sha512_1k ... bench: 4337 ns/iter (+/- 26) = 236 MB/s
test sha2::bench::sha512_64k ... bench: 272142 ns/iter (+/- 1499) = 240 MB/s