[System.Numerics] BigInteger.GCD(0,x) must return abs(x) instead of x

According to the docs and matching the behavior in .Net, BigInteger's
GreatestCommonDivisor must return the absolute value of the non-zero
parameter if one of the parameters is zero.

Previously it just returned the other non-zero value, even if negative.

Contains a fix and extended unit tests to cover the case.