Fix login box not hiding, http-auth box appearing

HTTP basic auth box appears when authentication is required. This looks
like it was due to Flask-Restful's default http 401 error handling. It
sends a http basic auth request which causes the browser to pop up it's
http auth login box. This was fixed by overriding Flask-Restful's
Api.unauthorized() method to one that just returns a 401 response to the
browser.

NOTE: This overriding is done by util.new_restful_api(), so
all future Restful Api instances MUST be created using this function.

The login box wasn't hiding itself even after login. This turns out to
be due to multiple login required events being fired, which causes
multiple login boxes to be created. Making sure that only one login box
is fired also fixed the username field not being focused when the login
box appears.
Fix model collation, authorization get model name

Some of the models weren't being set to UTF-8 collation cause they were
missing table args.

Instead of hardcoding the model names, authorization just gets the class
name to use.
Navbar now knows whether it's in course or not.

Navbar will display addition options if it's in a course. It now checks
the router to see if we're in a course route. It also updates the
breadcrumb for course name, so we don't have to worry about it in all
the course route controllers.
Single form for editing/creating courses.

Instead of duplicating code and having separate forms for editing or
creating courses, there is now a single form that should serve both
purposes. There is some trade off, such as not being able to tailor the
submit button for Edit/Create courses, leaving it as a generic "Save"
button.

Putting all the css and elements required to implement bootstrap's form
field feedback look is now abstrated into a directive, the
acj-field-with-feedback directive. It's first used is in the course
form.

CKEditor options are now centralized into the EditorOptions service.
Though currently there is only the "basic" function.
New course configuration page.

Using the shared template with course create, make available the new
course configuration page.

Note that Criteria and Tags section does not work, only the Information
section right now.

Criteria and Tags are lower priority, will be done later.