Feature/conference refactor

**Work in progress; not ready for merge**

# Purpose
The conference submission service is largely untested. It's also currently hard to test, since it's mostly made up of a few large functions with many responsibilities. This patch refactors the existing code into smaller, most testable units, and tests those units.

# Changes
* Refactor conference submission logic into helper classes / functions
* Test refactored code

# Side effects
None expected
Now that you mention it, I don't think we need to call `to_dict`. It's just a holdover from the current version (https://github.com/CenterForOpenScience/osf.io/blob/c973ef58d142f943d18f939639a02f7c96990737/website/conferences/views.py#L307), where we were sanitizing the whole form. Now we're sanitizing on output rather than input, so we shouldn't need to do any of this.