SubmissionsController - reject files with illegal extensions

When an instructor has limited the extensions that a student is allowed
to submit, the Submissions Controller now rejects a submission that
includes a file with a disallowed extension, giving the user an error
message so they know what went wrong.

The Javascript on the page also now does client side validation of the
file extension to make user experience better and to lower the number of
POSTs made to the server.

Fixes CNVS-6121

Test Plan:
1. As a teacher, create an assignment in a course that accepts a file upload
2. Limit the file extensions so that you have a test file that would not
be allowed
3. Now as a student, submit a file with a disallowed extension
4. Observe that the file is rejected for submission
5. Upload a file with an illegal file extension to the files area
6. Return to the assignment, and submit the file from the files area
7. Observe that the file is rejected

Change-Id: I45cbbc66f0b5033b9265221afde5590a1eeeb11d
Reviewed-on: https://gerrit.instructure.com/40784
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Sean Lewis <slewis@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>