make inputs/outputs more user-friendly
allow reductions to be passed to compile_gradient
Finish Symbolic: new tests, update README, add to init