Permit Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator to save cur...

...ve names, per Jira BMA-101

When publicKeyParamSet is left null, then GenerateKeyPair() does not look up the parameter set to try to save the curve name.  When it's set, the constructor overloads for ECPublicKeyParameters and ECPrivateKeyParameters take the curve name and don't bother with explicit encoding.

This resolves Jira issue BMA-101.
Copyright doesn't protect ideas, it only protects the expression of an idea.  Microsoft's System.Numerics.BigInteger implementation (posted on http://referencesource.microsoft.com/) used the line:
    return -(value + BigInteger.One);
With the new operators, I could have simply lifted that line and it would have worked without modification.  However, it would have incurred additional method call overhead, and would have left BouncyCastle open to a copyright infringement claim as well.  Instead, I rewrote it to use the implementation directly, thus changing the expression of the idea to something that does not infringe.

Why did I check referencesource.microsoft.com at all?  I wanted to see how Microsoft handled the twos-complement of a value that didn't take up the entirety of the space allocated for it, so that people trying to switch between System.Numerics.BigInteger and Org.BouncyCastle.Math.BigInteger wouldn't be astonished at a change in behavior.  (i.e., I did it to enhance interoperability with Microsoft's implementation, which is explicitly permitted under the terms of the Microsoft Reference License.  Since System.Numerics.dll doesn't even exist until .NET 4.0, BouncyCastle may be the easiest way for anyone still on an earlier runtime to get a functioning BigInteger implementation.)