User defined datatypes

Dummy PR so I can comment on this branch.
Eventually (maybe not in the first PR) we'll also want to test that we can serialize to parquet, since I think that is the whole point of having conversion functions.