canonical versions of sigencode methods

Bitcoin uses canonized format for signatures which enforce enforce low S values, by negating the value (modulo the order) if S is above order/2.

See https://github.com/bitcoin/bitcoin/blob/master/src/key.cpp#L214

I don't want to break existing unit tests and cleanest way how to add this functionality seems to be the introduction of canonized sigencode methods. Or do you think there is a better way?