A Theory of Explicit Substitutions with Safe and Full Composition (Logical Methods in Computer Science, 2009)