Rough implementation of unique pointer, goal was to familiarize myself with more modern C++ constructs ie: Smart Pointers, Move Semantics, Templates