more permissive scrutinee types in virt pattern matching

this commit adds support for definitions like this:

def runOrElse[T,U](in: RandVar[T])(matcher: T => RandVar[U]): RandVar[U]

previously, `in` was restricted to have type `T`
exceptions
committed choice, eager and lazy, weighted coffee meetings
Merge pull request #2 from TiarkRompf/topic-virt-patmat-2.10.0

more permissive scrutinee types in virt pattern matching