Signature's S, when over half order, has to be encoded differently

Reference implementation: https://github.com/bitcoin/bitcoin/blob/b7bba43a14a641b6b64bbf48357b2987c1b05800/src/key.cpp#L235-L238

ht @oleganza

Thoughts?
This actually modifies the signature itself.  I believe you want the following so you're modifying a copy:

```Go
	sigS := new(big.Int).Set(sig.S)
```