Don't test specifically against NULL
Add a borrowing constructor.
Add a borrowing constructor, change member names for politeness, re-order members, and yank some member definitions out of line.
Improve error message formatting.
Add a makefile.
boilerplate cleanup.
Update readme
Update generated versions of files.