secp256k1: Use mod n scalar when signing.
secp256k1: Use mod n scalar when signing.

This modifies the function that produces signatures to use the new
ModNScalar type instead of big ints and also fleshes out the comments to
include a reference to original signing algorithm in GECC, a paraphrased
version of it for those without access to the book, and the
modifications made so that it is deterministic per RFC6979 and conforms
to BIP0062.

This is work towards eventually using the new more efficient mod n
scalar throughout.

While the primary focus of this change is not optimization since signing
happens infrequently enough that it is not in a performance hot path, as
can be seen from the benchmark below, it does have the effect of making
signing a bit faster.

The following benchmark shows a before and after comparison of producing
a typical signature:

benchmark       old ns/op    new ns/op    delta
-------------------------------------------------
BenchmarkSign   59788        54905        -8.17%

benchmark       old allocs   new allocs   delta
-------------------------------------------------
BenchmarkSign   43           36           -16.28%

benchmark       old bytes    new bytes    delta
-------------------------------------------------
BenchmarkSign   2338         1776         -24.04%

decred/dcrd,jrick/dcrd,decred/dcrd,jrick/dcrd