Applications of ergodic theory and sofic systems to cellular automata