Support for returning student data to the portal

This involves:
 - creating and tracking Runs based on the launch domain/external_id
 - tracking the authorization token so we can post back to the portal
 - actually posting the data at save time