Tracks last edited date and user, and adds has_changes for blocks

The `user_id` passed into `_update_single_item()` will always be None, so `edited_by` will always be None, but @nasthagiri will fix that in her work. STUD-1724

@cahrens @andy-armstrong @dmitchell 
This probably needs a comment as I had a double take as to whether this should be True or False. What you're saying is that if the item isn't found in the DraftModuleStore then it must only exist as a published item. This is a confusing model which is one of the many reasons to move to split!