Unified typechecking.

* [SC] Typechecking *everywhere* uses must_be/2 now.
* [AP_DIR,DOC] Documentation improvements.
* [DCG_GENERIC,FIX] dcg_phrase/2 with atomic argument must call dcg_phrase/3 with `''` i.o. `[]`.
* [MATH_EXT,SC] Removed betwixt/3, use the builtin between/3 instead.
* [PROLOG_CONTROL,SC] Removed boolean/2, never used.
* [TYPECHECK,NEW] Rewrote this module, reusing must_be/2 from library(error). Much shorter code now. Unified the way in which typechecking occurs throughout the codebase.
* [XML_NAMESPACE,O] Clauses of xml_register_namespace/2 would recheck for iri type compliance multiple times.