Add support for deprecation warnings, and non demotable diagnostics.

To support deprecation, a new severity :deprecation was added. These
are collected as warnings in the acceptor, but are issued with
the prefix "Deprecation notice: ". There is also a separate
setting for max_deprecations that is different than max_warnings.

In order to prevent crucial issues to be demoted by mistake (i.e. they
are always errors and not configurable), a "demotable" feature was added
to the Issue class, and it is conveniently configured using the
hard_issue method instead of issue.

An attempt to demote such an issue will result in a DevError being
raised.