SPaR: Self-Play with Tree-Search Refinement to Improve Instruction-Following in Large Language Models