replaced allocated pointers with standard unique pointers

the standard unique pointer (std::unique_ptr) automatically deletes the
allocated resource it is holding when the pointer goes out of scope or
when its parent container goes out of scope or is deleted

most allocated resources throughout the application were replaced with
these eliminating the need to delete the resources in destructors (which
were left empty, and so were deleted)

in several header files, the unique pointer needed to know the size of
the underlying resource (class), and forward references to these classes
are not sufficient, so these were replaced with includes of the actual
header for the class