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.

Please do not make this a ddoced unit test. Leave the examples in the docs and the unit test below, outside of the class. The reason for this is that is that the unit tests inside of the class get instantiated and run for every instance of `RedBlackTree` which is instantiated as part of the unit tests.