Split/auto publish

LMS-11017 https://openedx.atlassian.net/browse/LMS-11017
Hey @mmprandom I'm just saying - since you wanted to take a stab at implementing a decorator earlier:  This auto_publish method would be a great candidate for a python decorator.  Essentially, you would decorate each method in this file with an `@auto_publish` if it needs it.  And then just keep the implementations as they were before.

But it wouldn't work for `delete_item` since it doesn't have the item, only the item's location.