Implement spec_types/2 and spec_arity/2

This gives us a convenient way to analyse the size and structure of a
format spec's expected arguments list.  This will be the foundation for
our check/0 checker.
Find errors in format strings

format_error/2 provides English-language descriptions of what's wrong
with a specific format/2 or format/3 goal.  This predicate will be the
foundation for a check:checker/2 rule.
Remove some early debugging code
Quote format string in errors

When a format string is invalid, quote it.  This helps the developer
know what type of format string was provided.  The quotes also delineate
the beginning and end of the bad format string.
Find mistakes in debug/3 goals

debug/3 uses the same format strings and arguments as format/3 so we can
easily check it too.
Hook into check/0 to find format mistakes

Running check/0 now checks one's code for mistakes when calling
format/2, format/3 and debug/3.  To get just the check support, do

  :- use_module(library(format_spec), []).