Add implementation using Numpy C UFunc API

For now, the tests from #1 can be used with this extension module -- but I think eventually we want to centralize the test suite and have it run against all of the implementations as a fixture.

Just to compare and contrast with #1: By using the UFunc API, this lets Numpy handle the broadcasting for us upfront, rather than handling it ourselves.  I think the per-erfa-function lines-of-code is probably a little lower for this approach as well (though there is some extra helper functions at the top, we only have to get that right once).