Alternative splicing: combinatorial output from the genome