Example of a more complex service (WIP)
Code compiles

A basic example using Auth is implemented. This shows how to handle
monads that return values. Not sure how to model login failure -- either
as failure within the monad or as an Option[User] result. I've currently
gone for the later but not sure how to use the Option within subsequent
computation.
Fix up logging

Logging returns unit, instead of wrapping an expression
Complete free monad composition example

Does all the Inject / Coproduct stuff to combine free monads and their
interpreters.
Refactor Auth

Make the API more like a typical REST program.