Rename the "struct arrfunc" to "struct arrfunc_type_data"

This is to free up the arrfunc name for creating a nicer-to-use
object.
Switch funcproto to use an nd::array for its param_types
Switch the arrfunc to use a funcproto instead of a list of types
Attempt workaround for memory leak in gcc-compiled version

This change is theorizing that the pointer-to-member-function
in the pair is triggering a bug with how the stack destructor
information is managed. By taking a pointer to that function
pointer instead of the function itself, maybe things will work
better.
Restructure the ckernel CRTP helper classes to share common code
Introduce nd::arrfunc to hold arrfunc objects
Test case and fix for issue from Hugo
Merge pull request #46 from mwiebe/rolling_apply

Work towards being able to do rolling apply