Implement recursive source transformation

Closes #41.
Tweaks to recursive source transformation

Add docs; clarify tests; use `undefined` to signal default, not falsy.