Overhaul NULL implementation (#115)
This is a fairly significant refactor to overhaul how NULLs are
represented internally and includes some BREAKING changes to the file
format (which has been bumped to v7).
Previously, a NULL value was given an exclusive SQL type (so it didn't
have an actual type). This caused some problems with the fact that NULLs
have to be typed in the SQL standard.
In the process, it's created a more robust type system (which is
important for CAST which will come later) and fixes at least one bug
with NULL booleans and timestamps.