function: Remove JSClass macros
Port Function to use the CWrapper template, instead of the GJS_DEFINE_PRIV_FROM_JS family of macros.
Follow-up from !530 (merged) (Repo), !533 (merged) (Param), !537 (merged) (Importer), and !549 (merged) (GType, Ns, and Cairo)
Includes Marco's work from "function: Make the object more C++ friendly" (!514 (merged))
Co-authored-by: Marco Trevisan (Treviño)
Edited by Philip Chimento