Refactor config->tree to config->data_struct

Instead of hard coding conifg->tree of type tree_config, the user should
be able to define their own data structure config, therefore
config->data_struct is a void pointer.
Add unittest runner and enable travis