Add cpointer serialization support to serialize and add define-serializa...

...ble-cstruct

* extra serialization support is needed because cpointer are equal? but not always eq?
* define-serializable-cstruct is a combination of serializable-struct and define-cstruct.
  It defines serialize and deserialize functions for a limited subset of cstructs, that
  may contain primitive types, arrays, other serializable cstructs embedded or via pointer.
  Cases handled include: self-referencing cstructs, cyclic cstructs and shared pointers
* Tests and documentation are included