Memory management tests & initial matrix commit

Tested std::unique_ptr as a memory manager for the data pointers, this
sadly increased the construction time considerably. An explicit
destructor caused much less impact on performance.

Matrix header added to repo.