Remove shared pointers and auto range, make rngs static, add start for cpp tests

This does not add any feature and it should be usable in the same way as previously.
Very minor functionality is added, mostly for diagnostics.