makefile: add test target

This change adds a new list of programs, TESTS, as well as a target that
will compile and execute the items in that list.  By default, these test
programs are neither compiled nor run.
intrusive: add test_intrusive

This change adds a test for the intrusive structure templates.  This test
was extremely useful while developing intrusive_tree and caught bugs in
stack and queue where bound links would incorrectly report that they were
unbound.
stack: fix whitespace nit
stack: add asserts + fix link's bound predicate

This commit adds extra asserts to push + pop re: the state of link.
Additionally, it initializes head to be a small, non-NULL integer.
Otherwise, the last bound link will incorrectly report that it is not
actually bound.
queue: add asserts + fix link's bound predicate

This commit adds extra asserts to enqueue + dequeue re: the state of link.
Additionally, it links the final object to itself.  Otherwise, it would
incorrectly report that it is not actually bound.
order: add asserts re: link

This commit adds extra asserts to insert + remove re: the state of link.
There were no actual issues in this structure.