Switch back to separate jit/non-jit versions of derivative

There are some cases where using the njit function directly can be useful,
and this allows us to combine that with multiple data types.
Add separate njit function to handle 2-d arrays