Prokaryotic introns and inteins: a panoply of form and function