Bug fix for basic.gcd(a,b)

- Now throws an error if non-integer values are passed.
- Fixed bug. `a` is returned if `b == 0` and vice versa.
- Added more test cases for `basic.gcd()` and `basic.lcm()`