Unify CaseResult with PassResult/FailResult/SkipResult by making CaseResult an interface that the other three implement.
CaseResult types hide irrelevant members via explicit interface implementation.  All these properties are useful when inspecting the full tree of all CaseResult, but some members are pointless when you are interacting with a concrete CasResult implementation like PassResult.
Merge pull request #65 from plioi/UnifyCaseResultTypes

Unify case result types