Do away with annoying wrapping of inherited functions

Using the curiously recurring template pattern.
The StlDS now accepts a derived class as a template argument, allowing it to instantiate objects of derived types directly.