Update the perfect facade macros to support a template parameter
Add the explicit function adaptor
Add the implicit function adaptor