utilities: added a header for special pointer types and a UniquePointer template type, which can be used to wrap a pointer and pass it around.
utilities: added a header for special pointer types and a UniquePointer template type, which can be used to wrap a pointer and pass it around.

Invoking the copy constructor invalidates the source of the copy and passes
ownership of the pointer to the copy.

Not yet tested, could be a bit broken...

jmolloy/pedigree,jmolloy/pedigree,jmolloy/pedigree,jmolloy/pedigree,jmolloy/pedigree,jmolloy/pedigree,jmolloy/pedigree