move backend build stuff into their own CMakeLists.txt
move all of avro backend into the backend directory
move backends into their own namespaces
move functionality to create ShareData objects into the respective backends so they are completely self-container
Move all the code for each backend into a separate namespace in its directory

Now we can just clone one of the backends by copying the directory and changing the namespace to create a variant.