Wrapped the NIF with an Erlang abstraction so that hearlpix.erl functions call hearlpix_nif.erl functions.  This decouples the Erlang API from the C API and also allows us to implement guards in Erlang, rather than messing with try/catch blocks in C++.