Crypto: Improve checked add functions & add tests

Improve the functions that keep track of the size of the data on which a Digest is being computed and add some tests. The tests are a little redundant for the success cases - if they didn't work, the Digests that use them would fail. The failure tests are a bit more useful since its very difficult to test them through the Digests - processing 2^64+1 bits of data would take a long time!

The performance stays basically the same:

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: 6146 ns/iter (+/- 169) = 166 MB/s
test sha1::bench::sha1_64k ... bench: 389713 ns/iter (+/- 5396) = 168 MB/s
test sha2::bench::sha256_10 ... bench: 77 ns/iter (+/- 1) = 129 MB/s
test sha2::bench::sha256_1k ... bench: 6743 ns/iter (+/- 57) = 151 MB/s
test sha2::bench::sha256_64k ... bench: 430467 ns/iter (+/- 5599) = 152 MB/s
test sha2::bench::sha512_10 ... bench: 58 ns/iter (+/- 1) = 172 MB/s
test sha2::bench::sha512_1k ... bench: 4423 ns/iter (+/- 42) = 231 MB/s
test sha2::bench::sha512_64k ... bench: 281124 ns/iter (+/- 4358) = 233 MB/s
```