CForest new version

Do not focus on the documentation, I am leaving it for the end since there are a lot of changes and probably more to come.
This sampler does not allocate any state. It works only with pointers. This is what I am doing: tree A finds a solution, so statesA are shared to tree B. The sampler just stores the pointers of statesA. The way pruning is done (states removed from the nn_ but not freed until the end) guarantees that these statesA would be in memory so the sampler only copies the state to the pointer given by tree B when calling sampling function.