template-ize sink and source in some places
sink and source are template parameters in all formats
rename writer test file and test more extensively
split v3 test up
to do: empty message structures
test self-recursive structure