add traverse to Traversable typeclass to allow capitalization on similarities between Functor and Traversable instances; add class for left-distribution and mention laws for APlus and AOr classes