Add 1st game-dev and web-dev campaigns to world selector
Take player back out to world selector after completing campaigns up through forest
Closes#3828
* Tweak API doc behavior and styling
* Instead of moving to the left during active dialogues, just move to the top
* Allow pointer events
* Adjust close button
* Re-enable pinning API docs for game-dev and web-dev levels
* Make sidebar in PlayGameDevLevelView stretch, better layout columns
* Set up content of PlayGameDevLevelView sidebar to scroll
* Add rest of PlayGameDevLevelView sidebar content, rework what loading looks like
* Finish PlayGameDevLevelView
* Add share area below
* Cover the brown background, paint it gray
* Tweak PlayGameDevLevelView
* Have progress bar show everything
* Fix Surface resize handling
* Fix PlayGameDevLevelView resizing incorrectly when playing
* Add GameDevVictoryModal to PlayGameDevLevelView
* Don't show missing-doctype annotation in Ace
* Hook up GameDevVictoryModal copy button
* Fix onChangeAnnotation runtime error
* Fix onLevelLoaded runtime error
* Have CourseVictoryModal link to /courses when course is done
* Trim, update CourseDetailsView
* Remove last vestiges of teacherMode
* Remove giant navigation buttons at top
* Quick switch to flat style
* Add analytics for game-dev
* Update Analytics events for gamedev
* Prefix event names with context
* Send to Mixpanel
* Include more properties
* Mostly set up indefinite play and autocast for game-dev levels
* Set up cast buttons and shortcut for game-dev
* Add rudimentary instructions when students play game-dev levels
* Couple tweaks
* fix a bit of code that expects frames to always stick around
* have PlayGameDevLevelView render a couple frames on load
* API Docs use 'game' instead of 'hero'
* Move tags to head without combining
* Add HTML comment-start string
Fixes missing entry point arrows
* Fix some whitespace
* Trim index_old_browser.html (shown on /play/) to simple page
* Fix useragent middleware to attach where needed
* Show IE alert on all pages on application init
Partially fix ActivateLicensesModal.spec
[IN PROGRESS] Don't display deleted users
Move userID to classroom.deletedMembers on user delete (not retroactive)
Fix PDF links for course guides, remove old PDFs from repo
Remove deprecated SalesView
Remove underline for not-yet-linked student names
Only show class select when there's more than one
Ignore case when sorting student names
Use student.broadName instead of name for display and sorting
Fix initial load not showing progress after joining a course (hacky)
Fix text entry for enrollment number input
Fix enrollment statistics
Fix enrollment stats completely (and add back in per-class unenrolled count)
Add deletedMembers to classroom schema
More fixes to enrollment stats (don't count nonmember prepaids)
Don't use 0 as implicit false for openSpots
Update suggested number of credit to buy automatically
Fix classroom edit form ignoring cleared values
Add alert text when more users selected than enrollments available
Alert user when trying to assign course to unenrolled students
Alert user when assigning course to nobody
Add some tests for TeacherClassView bulk assign alerts
Fix TeacherClassView tests failing without demos
Use model/collection.fakeRequests :D
Remove unused comment
Fix handling of improperly sorted deleted users on clientside
Add test for moving deleted users to deletedMembers
Add script for moving all deleted classroom members to classroom.deletedMembers
Completely rewrite tallying up enrollment statistics
Fix some tests to not be dependent on logged-in user
Address PR comments
Fix default number of enrollments to buy
Fix i18n for not enough enrollments
Use custom error message for classroom name length