Added regression tests for coming change
Pulled local version of catch.hpp
Made `ptr` a trivial type
Added explanatory comments to nontrivial passages
OCD: removed spaces on empty lines
Replaced all occurrences of `typedef` by `using`
Removed unnecessary `swap` definition