add a new avro based backend

it is fast and stable regarding killing/running out of disk space
return by reference when you should
simplify macro usage
change how types are specified from python

we now pass the traits class rather than have the type in the name.