Rule By Example: Harnessing Logical Rules for Explainable Hate Speech Detection