Analysis of codon usage patterns of microbial genomes with self-organizing map: methods and applications to genome exploration