Added a constant time comparison function for cryptographic hashes

Added a new function to $(REF secureEqual, std, digest, digest) that compares
two ranges that represent hashes in a secure manner. The comparison is done in
constant time regardless of the equality of the two ranges in order to protect
against timing attacks. For more information on the attack, please refer to
the docs on $(REF secureEqual, std, digest, digest).

-----
import std.digest.digest : secureEqual, toHexString;
import std.digest.hmac : hmac;
import std.digest.sha : SHA1;
import std.string : representation;

void main()
{
    // a typical HMAC data integrity verification
    auto secret = "A7GZIP6TAQA6OHM7KZ42KB9303CEY0MOV5DD6NTV".representation;
    auto data = "data".representation;

    string hex1 = data.hmac!SHA1(secret).toHexString;
    string hex2 = data.hmac!SHA1(secret).toHexString;

    string hex3 = "data1".representation.hmac!SHA1(secret).toHexString;

    assert( secureEqual(hex1, hex2));
    assert(!secureEqual(hex1, hex3));
}
-----
