Colour calculations are now much faster 2nd time around

Implemented GCD to cache the result of the colour generation. This has
proven to be anywhere from 20 to 80 times faster for subsequent calls.

Time in seconds of calling a single colour:
First call = 0.001161
Second call = 0.000014

That's an improvement of roughly 83x