Allow non-public constructor for Function DI
A (non-static) Function's constructor that is used for dependency injection must currently be public.
Sometimes a Function has dependencies that (even as interfaces) are internal to its own project. As parameters of a public constructor, they are forced to become public, even though that is not the correct visibility modifier for them.
Non-public constructors (particularly internal ones) are the natural solution to this.