fix(controllers): fix reused dependencies

Originally wanted to keep dependencies of controllers in a local
object, but realised it was a naive decision because tests may need to
spy on services so sometimes they need to be injected again.

This could be worked around by directly providing the dependencies as
the second parameter to `t.controlller`, but the slight performance
improvement isn’t worth the restriction.