Implement static page content section reassignment

* Provide the machinery to enable reassignment of the content_section
  while editing a static_page. Care is taken to ensure that when moving
  a ContentGroup parent, it's children move with it.
  (addresses #1819)
Disabling move b/w null content section and not

* The code for moving between the null content section case (like
  Syllabus pages) and the not-null case, and back again, isn't tested as
  well as I like, so this commit adjusts the UI so that users don't
  have that option.
Enforce constraint on course_info pages

* "course_info" pages (those static pages that appear in the top bar
  drop-down) may only ever appear there, where normal pages (those that
  appear in content sections) may only ever appear there.
Make ContentGroup.groupinfo_by_id more defensive
Fix exception from content section move
Merge branch 'master' into jrbl-1819-static-page-section-reassignment_rebase

Conflicts:
	main/courses/additional_pages/views.py
Fix for #1919

Handles AJAX success case with new function that's similar to the
existing error handler

	modified:   templates/exams/view_exam.html
Remove unnecessary console logging

	modified:   templates/exams/view_exam.html
Minor change to AJAX Save Answers

	modified:   templates/exams/view_exam.html
Merge pull request #1871 from Stanford-Online/jrbl-1819-static-page-section-reassignment

Implement static page content section reassignment
Merge pull request #2007 from Stanford-Online/wescott-master-exercise-work

Fix for #1980 (on master)
Fixes #2013, makes s3 url not region specific
Merge pull request #2014 from Stanford-Online/jbau-non-region-s3-url

Fixes #2013, makes s3 url not region specific
Merge branch 'master' of https://github.com/Stanford-Online/class2go into wescott-master-exercise-work