(PUP-4277) Make case/selector match be recursive
Before this commit case/selector matching was only done at
surface level, all recursive matching was based on equality.
This makes tests recursive which is far more valuable than behaving
as a sequence of if-elseif... with equality checks.