Add support for structured array ufuncs

- Add New api method PyUFunc_RegisterLoopForStructType for creating new ufunc for structured array
- Add arg_dtypes array to PyUFunc_Loop1d object. This keeps track of each struct dtype that the ufunc can handle.
- Add arg_dtypes parameter to ufunc_loop_matches function so that struct dtypes can be compared for NPY_VOID type num
Add comments for new RegisterLoopForStructType API method
Fix build error
Code cleanup
Add test for struct array ufuncs
Add support for python 3
Update c-api documentation
Change free to PyArray_free, and formatting changes
Whitespace change
Remove unneeded code
Add null check
Change name of RegisterLoopForStructType to RegisterLoopByDescr
Add test for RegisterLoopByDescr and custom dtypes
Code cleanup
Another name change to RegisterLoopForDescr
Merge pull request #462 from ContinuumIO/ufunc-struct

Create ufunc for struct array