Handle must_be/2 type declarations

A must_be/2 goal asserts that the second argument must have the type
described by the first argument.  Its behavior is semantically similar
to type declarations in other languages, so it should use the same name.