Add dependencies to generate docs.
Turn documentation examples into code blocks.
Add link to paper in the module documentation.
Don't use lambda shorthand for default args.

Using the regular lambda definitions allows for cleaner docs generation
since `&(&1 + &2)` appears as fn `(xA, xB) -> xA + xB end`.