[WIP] Extract common functionality to xblock-utils

@dragonfi I think this would cause problems to persist changes done in studio, since `block.xml_content` would then be overwritten by an empty tree (there are no real children on the LMS). I talked about this already on https://trello.com/c/qG34lVBg : 

> This would be to not overwrite the value of xml_content once it is defined, but still allow to load that content from the children definition when it is empty (in the workbench, or in the original XML import of the Harvard GSE course in Studio).

Ie `getattr(block, 'xml_content', '')` allows to keep the current value from the `xml_content` attribute when it is already set, and if that fails `etree.tostring(node)` loads the content from the children of the block (for the workbench, and loading a course XML archive).