Eliminate DatomicData hierarchy

This pull request aims to make Datomisca much more lightweight:

 - Eliminate the DatomicData type hierarchy, to eliminate the syntactic and runtime overhead of wrapping all Datomic type.
 - Rely on the type classes instead to provide the equivalent type safety
 - remove Namespaceable trait
 - use Clojure’s keyword and use a type alias to provide a modicum of API compatibility
 - try to eliminate the cases where keywords are explicitly constructed, and instead rely on the Namespace construct
 - no longer need the common project for the macro project to depend on, so merge common into core
 - rename `DRef` and `ToDRef` to better fit its special case: now `DatomicRef.type` is used as a phantom type param and the type class is `AsDatomicRef`
 - rename DDatom to Datom and make it an AnyVal
 - rename DRules to QueryRules and make it an AnyVal (placed into the macro project)
 - rename DEntity to Entity and make it an AnyVal
 - rename DDatabase to Database
 - split up the remaining DatomicData file into the various type classes and core types
 - extract AsPointT type class into its own file (and tweak return type from Any to AnyRef)
 - eiminate Nativeable, DataFunction traits, rename Operation to TxData
 - rename DId.toNative to toDatomidId
 - Operation.toNative becomes TxData.toTxData
 - clean up operations file
 - remove Props in favor of SchemaEntityBuilder