Created simple functional pattern matching construct.

Please consider this contribution.
Would the signature be improved with:
`...<A extends C, B, C> Case<? extends C, B> when(F<A, B> f) { ...`
I would need to fork the code and try this out.