Added unit tests for knownEqual() and fixed one design flaw this way.
Made the default cases for isType() and typeCheck() into errors, moving the return-false behavior into specific branches.
Added isWellFormed() along with unit tests. It takes the place of the return-false default behavior we just removed from isType() and typeCheck().