Progress on implementation of an arrfunc registry

Adds a global function registry to the library, along with a bunch of functions implementing the set of math functions in numpy ufuncs.

Also contains some design thoughts on the nd::arrfunc abstraction