Challenges in microarray class discovery: a comprehensive examination of normalization, gene selection and clustering