An information theory of the genetic code