Wrap FS::File in a shared_ptr for client_t because MSVC fails to infer correct move constructors