Fixed call stack tracing

Apparently the reason I couldn't get stack traces working properly was
because gcc's -O2 flag implies -fomit-frame-pointer.
Implement NULL pointer dereference checking

The page fault handler now notices if something's accessing the very first
page of memory (addresses 0x0 - 0xFFF) which is usually indicative of an
NULL pointer dereference.