Add developer guide to documentation

Currently, this includes documentation for types, scalar functions, and
aggregation functions
I like "native" or "internal". And how about calling it "native/internal container type". I think that would reduce confusion about long.class, since most people assume that if the internal type is long.class, then it represents a 2's complement long, when in fact it's just a 64bit container in the internal encoding. @dain or @electrum thoughts?