Consistently use std::unique_ptr to life-manage the PIMPL d object
Next up (patches partially done):
- change embedded pimpl classes to normal ones consistently
- use inherited private classes for classes with subclasses in the same module
Next up (patches partially done):