Complete existing operators for UGens and extend lcm/gcd to include negative numbers

This branch has two parts:

1. it completes the missing unary and binary operators for ugens that had a definition, but no implementation. Binary operators are ````lcm```` and ````gcd````, unary operators are ````rand````, ````rand2````, ````linrand````, ````bilinrand````, ````sum3rand```` and ````coin````. They follow the interpretation already given in ````rrand````.

2. it extends the domain of lcm/gcd in sclang (and the server) to apply to negative numbers. It does so following the lattice-theoretical model, which is intuitive with one exception. All basic algebraic laws apply. See the commit c6c2ea for more information.

It may be argued that (2) should be separated into a different operator, e.g. ````gcd2```` and ````lcm````. It does not touch, however, any of the existing  behaviour for non-negative inputs.
use `&&` instead of `and` or include ciso646. otherwise the code won't compile with msvc