add CardinalDirection class, issue #65