Fix inner1d issues

- Move 'int dim = dimensions[0]' line to after INIT_OUTER_LOOP_3, where it was originally. INIT_OUTER_LOOP_3 increments dimensions pointer by one, so that dimensions[0] points to first dimension length as intended.
- Adjust data pointers for negative stepping (see comments in code).
- steps[0] and steps[1] correspond to input steps, not steps[3] and steps[4]
- blas dot functions for complex numbers take pointer to return value as input argument
- Add tests for inner1d