experimental refactoring of DatomicDataConvert traits

separate out the single-param and multi-param type-classes for both reader and writer
DDReader and DDWriter are akin to type-level functions
DDReader is injective, so has an inverse partial function
extract the injective core of DDWriter into DDWriterCore, so that it too has an inverse
refactored again to use some math terms for DDWriter/DDReader and precise their kinds
simplified DDReaderMultiImplicits
renamed again DDReaderx to ToDatomicXXX and DDWriter to FromDatomicXXX
adding missing implicits
add SchemaDEntityOps.read[T] and .readOpt[T]

introduce non-injective Attribute2EntityReaderCast that uses non-injective FromDatomic
update comments in DatomicDataImplicits
fix: copy-paste error in FromDatomicImplicits
a SchemaDEntityOps.read specialized to DatomicData

fix the return type as the DatomicData subtype specified by the attribute
rename tests for ToDatomic and FromDatomic

update for new names, and add more tests
reörganize ToFromDatomicSpec

add more implicits tests
reärrange tests to be grouped more logically
Merge pull request #37 from pellucidanalytics/feature/ToFromDatomic

New conversions to and from DatomicData types
Merge remote-tracking branch 'origin' into v0.2