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())