Add a bunch of documentation, make some function private

Getting ready for a preview release, so it's documentin' time! Also the
time where I start turning things private.