fixed bstree_algorithms infinite loop when iterating backwards using prev_node and added tests

iterating backwards using bstree_algorithms::prev_node results in infinite loop when the tree has only one element.

I've updated the code and added test cases for bstree_algorithms usage. Without the fix the test case with one element results in infinite loop, prev_node does not check if returned node is the header node

I've noticed infinite loop in boost 1.49 and it looks like it's there through 1.55 up to current latest master branch.