Added initial files for B-trees in src and test.
Changed data structures for B-tree nodes and introduced compare callback into init function so that we can compare arbitrary keys with a user-supplied function.
Added an explanatory comment for the callback function.
Updated #defines to be consistent with the rest.
Renamed datum to record, datum was a bit clunky.
Added API for B-tree operations, all accompanied by header comments.
Change the name for add function to be clearer.
Changed the name of add function to be clearer.
Added the lookup function declaration and the stub to the API.
Changed callback to take just keys.

Users shouldn't need to be aware of the internal structure of the B-tree.
Slightly changed the callback function typedef to name the type compare_keys, hopefully clarifies the intent.
Changed the API to be more like jnxlist, there is no need to return jnx_B_tree * in add and remove functions, it should never change. We are manipulating nodes to which the root field of the jnx_B_tree struct is pointed to, we'll probably never change the memory where jnx_B_tree struct actually resides.
Added fields for order and compare_function to jnx_B_tree struct, renamed file names in header comment, and modified implementation of init function to take into account the new fields in jnx_B_tree.
Save partial implementation of insert.
Merge branch 'master' into B-tree
Formatting change in the comment to be more consistent with Alex's formats.
Periodic checkin to save the split implementaiton so far.
Periodic checkin.
Committing not to lose the ideas even though it's busted as a dropped ripe pumpkin.
Regrouped the functions and decided to split any full nodes that are encountered on the way down before inserting the record.