clarify redirection in ops
core.ops involves a _lot_ of redirection.  This decreases some of that redirection (and some redundancy) by implementing functions that show the logic of how some of the args/kwargs are chosen.  The goal is to make it so future debugging can be done without going through `func.im_func.func_closure[1].cell_contents.func_closure...`

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
