(PUP-2027) support lambda function api

Updates the Puppet 4x Function API with the ability to call a lambda given as an extra argument.
This support is implemented via the Callable type, and Function and Closure are now unified in how they describe their callable signature(s). See the individual commits for more information.

Function API documentation updated.