added destructor, because pointers are used
added assignment operator, a few tests (causing an exception)
Added a few more tests to catch all concat use cases, cleaned up code to fix some bugs
Implement basic leaf substring, change to smart_ptr to fix reference/delete issue
Added in non-trivial substring calculations, fixed child test bug
fixed concat bug, added extra debug output