Add construction-from-range capability to RedBlackTree

Construction from a range is one of the most fundamental container primitives and there's no reason `RedBlackTree` shouldn't support it. According to code comments, it looks like it was left out because of compiler bugs.

the `redBlackTree` convenience function was not updated because the combinatorial explosion is getting ridiculous, it would require either 8 overloads or an unreadable soup of templates that is only marginally shorter. It's a terrible design.

Also moved some examples to documented unit tests.

edit:

The patch for the second commit looks a bit weird because the code was already there, just commented out.

Fixed, thanks.