Implement the null deref checker on AST level.

We need to throw an exception if null deref is done. If we continued to do that
generating IR it would be too difficult to get the exception semantics and
cleanups right. Thus we decided to do it on AST level and delegate to codegen
generate the concrete IR that we need.
Add special exception type for the null deref exceptions.
Add proper handling of the runtime exception.
If we know at compile time that something is wrong - throw without checks.
Adapt to _Bool -> bool
Use reg expr, because when building cling standalone we should still get _Bool.