Fix MSVC build

This fixes MSVC and also simplifies some concepts in our stile implementation.  It also extends the set of things AddRecipient can deal with natively and is a little faster because it eliminates some uses of std::function.