Adding a compile- vs runtime-type twist

Wonder what you think of this variant - I promise it's the last suggestion ;-) If you don't like the twist with the compile-type value, I think the `case _ => println("Not a string")` makes the result feel a little weirder (the message is a little sneaky, too) than the `MatchError`.