Timer that operates on a scala.concurrent.Future.
Warning: This is not as accurate as org.gerweck.scala.util.timed, because it relies
on scheduling another job to run after the original future is complete.
Whenever possible, use timed instead.
The inline flag tells it to actually give you back a new Future that only completes when the
timer logging has been completed. This is a useful way to ensure that your log statements all
have the correct sequencing, with a small amount of overhead required to process the callback.