Edit Quiz: For the question editor, on smaller screens, show a stripped down version of the toolbar with only basic formatting options
Move underscore library into /client/vendor

Now that the /client/vendor directory is in source control (instead of being in .gitignore and managed by bower), there's no need to have 2 separate client-side library directories
Directory structure reorganization for all client side code

Categorizing things by controllers, vs. directives, vs. services, etc.
Remove unused file
Rename app.js to server.js
Create viewQuestion directive and refactor Take Quiz page to use it
Create editquestion directive and refactor quiz editor to use it
Create question schema

Refactor quiz schema to use an embedded document array for the "questions" field.

While the question schema is stupid simple at the moment, it will soon be getting more complicated. This is all in preparation for multiple question types (multiple choice, fill in, etc)
Adjust error message placement in Take Quiz
Create an abstract QuestionSchema, and a FillInQuestionSchema that inherits from it

All existing places in the code where we instantiated questions are now instantiating fill-in questions instead.

Mongoose's support for schema inheritance leaves a bit to be desired, especially when it comes to polymorphic methods. Some of this, especially QuestionSchema.methods.submit (in lib/question.js) is kind of ugly. Maybe it would be better to implement the submit method differently, without relying on schema methods/statics, but rather just have a plain method in a module.

** This breaks any old quizzes that were created prior to this commit. ** They do not have the document id or discriminator type (__t) fields populated.
Add multiple choice question schema

Route the submit method appropriately based on question type. No ability yet to save multiple choice questions.
Add validation for all question types
Get rid of question validation for now (problematic with autosave)

The issue is as soon as you click Add Question, it triggers autosave, and with the validation in place, the save fails.

I would need to implement some sort of "question draft" functionality first. You should still be able to save questions that don't have all the fields completed, but they shouldn't show up when taking the quiz. In the editor, they show up as a "draft" (i.e., there's some visual indication that the question is not complete, and that it's not going to show up when taking the quiz).

Until this happens, we either can't validate questions, or the way saving works would need to change (get rid of autosave), which I would rather not do.
Use findOne/save instead of findOneAndUpdate when saving quizzes, and improve display of error messages

The new way of saving quizzes ensures that any validation checks actually run (validation/middleware are bypassed with findOneAndUpdate).There aren't any validation checks at the moment (I just removed them in the previous commit), but if there were any, we would want them to run when saving a quiz.
Add jquery.browser plugin
Detect IE using jquery.browser and add "ie" class to <body> if so

Allows us to write conditional styles that target IE only if needed, with minimal hacks
Use the "grab" cursor when reordering questions (except IE)

IE does not support the grab cursor, so continue using the old "move" cursor instead on IE
Refactor shared logic when creating new quiz vs saving an existing one

Also, translate "__t" property to "type" when loading a quiz
editquestion: Move the question header into the directive

Added new attributes to control whether the question number, reorder, and delete buttons should be shown
Remove unneeded class