Split IvoryType into IvoryType and IvoryArea

  * this should allow GeneralizedNewtypeDeriving to work with either class