CDAO improvements

This fixes a few bugs I discovered in the CDAO module, and changes the way the CDAO Writer writes trees. Previously, librdf models were used for writing. This required every triple to be stored in memory, which is very slow and for large trees the memory use is prohibitive. Now, librdf is only used for parsing, and the output CDAO file is written manually.

Also, "storage" is no longer passed in as an argument to the writer in order to write directly to a triple store. Instead, you can just pass in an RDF.Model as the handle to use this feature.