Universal fault-tolerant quantum computation on decoherence-free subspaces