Refactor code for registering unary ufuncs
Refactor code for registering binary ufuncs
proof of concept to remove boilerplate in npydecl.py
refactored most unary ufuncs typeinference info in npydecl.py
moved sqrt into the generic path for unary math ufuncs

All the auto registered unary ufuncs will have the scalar out type work
as in sqrt. This is probably what is intended. Test need to be added, as
this is not really checked.
New impala lineage; develop from here

The original impala branch (now `impala-orig`) was quite diverged from
master/devel, and merging/rebasing was complex because of complex lineage.
Since the impala changes are primarily orthogonal to master/devel, I have
simply moved the new files into a new branch off of devel.  I will rebase
more frequently off of devel to make sure the two don't get too out of sync.
Rebased Impala work off of devel and fixed some bugs

The Impala branch was getting quite diverged, so I manually moved the
work into a new branch off of devel, since it's mostly orthogonal.
Attempting and actual rebase/merge was complicated because of a nonlinear
history that made some features come in and out.

Also fixed some whitespace issues and a bug regarding return types in the
ABI Handling.
Added void* and uint8_t* pointers to CFFI
lower_assign now supports struct-type Globals
Type seeding now seeds return type first, to ensure proper locking order