Filter, Obstruct and Dilute: Defending Against Backdoor Attacks on Semi-Supervised Learning