Implement a robust DSA API.

This patch introduces a new module (Crypto.Signature.DSS)
with a less error prone API for performing DSA signatures.

Similarly to Crypto.Signature.PKCS1_PSS, the module
creates a signer object that only works with hash objects,
not directly with messages.

Additionally, the caller does not need to provide any RNG.
The module will use the default one and will correctly pick
the critical nonce K.

Example of API usage:

>>> from Crypto.Signature.DSS
>>> from Crypto.Hash import SHA256
>>> from Crypto.PublicKey import DSA
>>>
>>> message = b'I give my permission to order #4355'
>>> key = DSA.importKey(open('privkey.der').read())
>>> h = SHA256.new(message)
>>> signer = DSS.new(key)
>>> signature = signer.sign(h)
Fix to missing block_size attribute bug

See https://bugs.launchpad.net/pycrypto/+bug/1209399
Add support for deterministic DSA.

This patch implements the variant of DSA
described in http://tools.ietf.org/html/draft-pornin-deterministic-dsa-02.

The nonce k is not taken from the RNG: instead, it is derived from
the message and the key.

DSA is still secure even on platforms where the RNG is not reliable
(e.g. in VMs).
IETF draft has become RFC6979
Fix to bug #1209399

The SHA-2 modules lost the "block_size" attribute along the way.
As result, the HMAC wrongly assumes they all have block size
of 64 bytes instead of 128 bytes (for SHA-384 and -512).
Generate DSA key given the domain parameters.

This patch makes it possible to generate a new DSA key so that it uses
a set of pre-defined domain parameters.

For instance, it is possible to generate 2 distinct DSA keys that
share the same domain parameters:

    >> key_one = DSA.generate(2048)
    >> key_two = DSA.generate(2048, domain=key_one.domain())