Warnings that default to being errors

This is a try at extending the warning API to include warnings
that would be errors unless the user callback decides to demote
them to warnings.  This allows for relaxed parsing logic that will
default to strict behavior but can continue if possible.