A Sri Lankan suicide bomber has killed dozens of people, including an opposition party provincial leader.