Since introduction of IgnoreJudgement and its usage in JuiceStream
and BananaShower the hard cast in CatcherArea that was used to check
if the drawable hit object should cause the fruits on the plate explode
at the end of combo caused a hard crash instead, since IgnoreJudgement
was no longer deriving from CatchJudgement.
Replace the hard cast with a soft pattern-matched cast.
We've seen multiple cases where DrawableHitObject are stuck in the lifetime management container
due to not implementing a judgement (meaning they are never "hit" or "missed"). To avoid this going forward
CreateJudgement() must be implemented and return a non-null judgement.
This fixes BananaShower and JuiceStreams in osu!catch.
This also makes HitObject abstract and cleans up convert HitObject implementations.