Implement a robust DSA API + support for deterministic DSA

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, 'fips-186-3')
    signature = signer.sign(h)

A later patch adds support for [deterministic DSA](https://tools.ietf.org/html/rfc6979), to make DSA robust in case of [RNG failures](http://arstechnica.com/gaming/2010/12/ps3-hacked-through-poor-implementation-of-cryptography/).

The example above remains applicable, but the signer object must now be created with:

    signer = DSS.new(key, 'deterministic-rfc6979')

Finally, the set of patches includes one to generate 2 DSA keys in the same domain:

    key_one = DSA.generate(2048)
    key_two = DSA.generate(2048, domain=key_one.domain())