CLC-4478 - Official Sections: As an Instructor, I want to be able to edit official sections

Contains changes related to:

CLC-4525 - Official Sections: Refactor business logic shared between LTI tools
https://jira.ets.berkeley.edu/jira/browse/CLC-4525

CLC-4526 - Official Sections: Create Course Info API end-point
https://jira.ets.berkeley.edu/jira/browse/CLC-4526

CLC-4534 - Official Sections: Add course info option to course provisioning data feed
https://jira.ets.berkeley.edu/jira/browse/CLC-4534
From what I recall from the docs and my testing, the error response isn't passed when using then() alone, you have to use catch() for non-HTTP-200 responses to ensure that the error response is passed back.

I tried to pass the callback in the call to then() like [the $q docs](https://docs.angularjs.org/api/ng/service/$q#the-promise-api) said:
```javascript
then(successCallback, errorCallback, notifyCallback)
```

But this didn't work for me at all. Only when I added the catch() call did it pass the error response back to the controller.