RGB <-> LabSpace memoization

PR started to address issue #9 . This is work in progress for comments and direction.

Yes, you're totally correct. But we should be hashing the vectors because that's what will be stored in the cache. You can grab the `hashValue`s from the floating point numbers by calling e.g. `x.hashValue` and XOR those to create the hash for the vector.