added register functions to handle the user defined data structure

removed user defined data structure functions (compareData, freeData,
printData) as function parameters
They are now registered to the list through:
- dll_registerCompareData
- dll_registerFreeData
- dll_registerPrintData
cleaned up code and documentation
updated README.md