Implicit metaprogramming tutorial for Scala