metadata support on fns did not work under advanced compilation in some
cases as the implementation was relying on undefined behavior - rest
args on protocol fns. Add a MetaFn deftype and use instead.