Add missing Blum Blum Shub pieces

Turns out, I missed adding the following requirements, per Wikipedia, for the
BBS algorithm:

    * The two primes, p and q, should both be congruent to 3 (mod 4).
    * The gcd(φ(p-1), φ(q-1)) should be small.

As such, the following code was added

    * Add congruency check for primes 'p' and 'q'
    * Add the Euler totient function.

Bug was fixed where 'p*q' was exceeding 2^53, creating non-random keys. This was
due to the possibility that '2*2^26' could be close to 2^27 and '2*2^27' could
be close to 2^28. Thus, the 'p' and 'q' prime generation was stepped down to
ensure that 2^53 is the hard ceiling on 'p*q'.