Module-qualify predicates

Since these predicates are loaded lazily, I want to make sure that we're
seeking the right goal and not an undefined predicate in the current
module.
Support intersection types

This is a more forgiving notion of type compatibility.  It's in the same
vein as success typing.