Striving for optimality: output-oriented models of language change