Re r41198: if you're going to break the interface, you may as well do it properly. Rather than Article::doEdit() returning some random fragment of data that your current application requires, how about we have it return a general, extensible object?
Also:
* Fixed EDIT_NEW on existing article to return an error status instead of throw a DB exception
* Fixed a bug dating from MW 1.5 whereby there's a short interval where an edit conflict can be missed, and an edit overwritten. See comment before updateRevisionOn() call.
* Reduced some indenting levels using early returns