[14] unique_ptr for MSVC

- Explicitly delete copy operations, as MSVC will implicitly define them otherwise
- Workaround a weird issue where MSVC refuses to use a type if it's an alias for a nested type of a class privately inherited from