UnaryFunction: rename to Function

We don't plan on having, e.g., a BinaryFunction, so let's just call it
"function" to make the name more concise. As it turns out, a Function op
can actually have more than one input -- it's just that the compile-safe
API of Function only exposes the generic type parameter (& getter &
setter) for the "primary" input of type I. Same for outputs.