Improved DateAndTimeUtils.
Created simple ExerciseGroup class.
Added natsort and natsort_by methods to Enumerable.
Removed Comparable from Exercise.

It made any two exercises with the same name equal, which is wrong.
Better to sort explicitly using `.natsort_by(&:name)`.
Refactored Exercise's exercise group methods.
Added ExerciseGroup#exercises.
Added UnlockTimeSpec class.
Initial support for filtering CSS and JS files.
Make XML filter process HTML files too.
Show HTML, CSS and JS solution files.
Split exercise_file_filter_spec into test case files.
Implemented CSS file filter properly.
(fix a migration when run on a fresh install)
Don't show solution files that are over 300KB.
Make submissions_before_this field 0 where it used to be nil.

The current NB plugin chokes on nil and there seems to be no reason
why it couldn't be 0. Actually even the HTML view doesn't seem to
deal with nil.
Moved rerun submission button higher on the page.
Added dynamic unlock and deadline logic. Not fully integrated yet.
Merge branch 'master' into personal-deadlines

Conflicts:
	app/controllers/courses_controller.rb
	app/models/exercise.rb
	app/models/user.rb
	db/schema.rb
	lib/course_refresher.rb
	lib/test_run_grader.rb
Fix mismerged migration.
Fix another merge bug.

Tests pass now.