Have TkCloner return std::unique_ptr for factory functions

The static analyzer was complaining about TkCloner returning
non-const pointers from functions. These functions were purely
factory methods so the complaints were not justified. However,
the best way to silence those complaints was to change the return
type to std::unique_ptr since this enforces the ownership transfer
which was merely implicit in the previous API.