UserCommandProcessor: replace OTCleanup with std::unique_ptr