Text changes for Email Sent by addition
A better check for the existence of matlabinput element.
Outline for release notes
Removed grading and drag'n'drop
release notes tweaks
Make sure that the currently-set language is the
one that shows on the left sidebar if no language
preference exists.

ECOM-135
Use opaque_keys w/ model vars not parsing of url
to generate url.
LMS-11209
JS regex's need to escape special chars
LMS-11260
Pin coffee-script version to 1.6.1.
add tests for drag and drop unit into collapsed subsection on course outline page
update/cleanup code + move verify_ordering and drag method to studio utils
Add test for at least one group before saving a group configuration
Merge pull request #4959 from edx/diana/set-cur-lang

Make sure that the currently-set language is the one that shows on the left sidebar if no language  preference exists.
Merge pull request #4973 from edx/tim/single-group-is-ok

Update test_group_configuration_validation on single group allowed
Merge pull request #4969 from edx/benp/fix-js-tests

Pin coffee-script version to 1.6.1.

1.6.3 is causing some issues.
doc-byte-sized-tasks: Add link to the byte-sized tasks in CONTRIBUTING

Thanks to @adampalay, we now have a list of byte-sized tasks, which are
useful for new contributors who want a gentle introduction to the
platform. This PR adds a link to the tasks tagged as byte-sized in the
public tracker.
Merge pull request #4965 from edx/split/lms_bugs

Split/lms bugs
Merge pull request #4972 from open-craft/doc-byte-sized-tasks

doc-byte-sized-tasks: Add link to the byte-sized tasks in CONTRIBUTING
Implemented Validation for Course Advanced Setting

This commit adds validation for course advanced settings. Currently when course
administrators make invalid changes in the Settings/Advanced Settings tab,
they're not notified through a new modal window of the list of invalid settings
changes.

* Extending CourseMetadata
    - Previously, we only had update_from_json method in CourseMetadata.py,
      and it was only validating one field every POST request.
    - Now we have validate_and_update_from_json method that encapsulates the
      functionality of update_from_json into a validation call
    - To avoid discrepancy of validation standards between modules, validation
      uses the from_json method implemented to each field in xblock.

* Different Response in advanced settings ajax requests
    - After receiving a POST ajax request, course.py calls
      validate_and_update_from_json, and sends a json object of either:
        1) valid course metadata model
        2) error objects

* Error Messages shown in validation-error-modal
    - error objects passed through ajax are shown in a separate modal.
Updating the Login button to have the same hover style as Drupal