Define interface

This adds the definition of the public interface. Comments welcome!

@neithernut 
I meant the documentation, you wrote `value to insert` but it's actually just the pointer to a value.

Feeling a bit nitpicky :tongue: