Introduce function array constant (#8793)
This introduces the FUNCTION_ARRAY_CONST kind and its payload FunctionArrayConst.
This is in preparation for refactoring isConst for functions in higher-order.
In particular, the plan is to never consider LAMBDA to denote a value of function sort. Instead, lambdas may be written to function array constants, whose uniqueness is trivial to justify.
This refactoring when completed will furthermore eliminate the last remaining static calls to the rewriter, to be done in a followup PR.