Gray code is a binary numeral system where two successive numbers
differ in only one bit.
This package allows to convert numbers to one of the possible Gray
codes and back. Two binary representations of a number are supported:
[Bool] and types of FiniteBits type class.
FiniteBits is the default implementation.