added Square
changed Int to Integer in several places
added property-based test suite
fixed enumDistance for Square
removed extraneous hex and hexIndex functions