This is a move-only variant of std::function to support move-only captures. Imported from LLVM with some small tweaks (changed to 4 pointer internal storage, warnings fixes).