dispatched methods maintain their docstrings

Previously they were partial functions, so had the partial docstring.
We use functools.update_wrapper to mimic the original function
rename args to _args
rename leaves to _leaves
rename traverse to _traverse
rename inputs to _inputs
rename subs to _subs
rename subterms to _subterms
remove dtype property
rename child to _child
rename project to _project
rename get_field to _get_field