Define interface

This adds the definition of the public interface. Comments welcome!

@neithernut 
But what are the arguments for the predicate function supposed to mean?

The first is a pointer on a constant void, and the second just a void pointer. What is each one of them doing?