MINOR: debug: use bit fields for the debug type and fatality
Till now the BUG_ON() series of macros has been relying on magic values
0,1,2, and 3 passed down the chain to decide whether to log a bug or a
warning, and whether to crash or just warn. But this doesn't capture the
whole usage and is causing difficulties because we also have type "check",
and these values are passed to variables historically named "crash" or
"taint" suggesting booleans while bit-exact checks have to be done.
Let's replace them with a combination that separately indicates:
- the type (check, warning, bug, abort), one bit per type, expected
to be exclusive
- type fatality (warning or fatal), one bit per level, must be
exclusive as well
This allows us to easily replace the checks and map the numbers to their
equivalent definitions. The macros are called DBG_DET_* (debug details),
and the "crash" and "taint" fields have been renamed "details" as well.
For now this is the exact equivalent of what we previously had.