Updated function_apply to define what parameters are needed rather than take them in as template parameters; this may prove to be an issue in the future, but for the while this helps the use case of taking references to arrays. Used parameter_type to get the most efficient parameter passing possible