The position used to calculate the stereo balance is now the position of
the drawable (as opposed to the position specified in the beatmap file
previously).
There is now a setting in the general settings called "Positional
hitsounds". If the setting is enabled, the hitsounds playback will be
shifted according to their position on the beatmap.
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.
To avoid further floating-point comparison bugs, remove all usages of
Bindable<{float,double}>, replacing them with their
Bindable<Float,Double> counterparts.