Extensible protocols for Scala