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 is very nitpicky, but I don't think you can edit something on a time. You can edit it on a date, but I'd probably make this 'edited_at' or 'edit_time' or something like that.