Initial rb-tree code commit

Heavily based off of the Linux-Kerenel's rb-tree implementation, this
code implements a generic implementation of rb-trees for use internally
in fircd. The rbtree structure will go on to replace most/all of the
usage of array.h, as well as linked-list structures, as the rb-tree
structure can give us O(lg 2) look-ups and additions, which a sorted
link list can't give us.

Also added is a simple 'container_of' macro. The macro allows you to
get the overal structure from a pointer to a contained member. This is
useful for both the rbtree struct and the rbnode struct. When you
create a new rbnode, you create a structure which contains the rbnode
struct as well as other information you want. When you pass around this
node, you pass a pointer to the contained rbnode, and then use
container_of to convert the rbnode pointer into a pointer to your
underlying structure.