Add jsrepl

8ce69a @ https://github.com/yihangho/jsrepl
Add very basic UI for interpreter.
Add code column to and remove code link column from submissions table.
Save and show code.
Some UI improvements for the repl.
Show only 1 code editor for the entire problem page.
Show the interpreter on the submission page.
Configure Ace editor.
Move jsrepl to inside of /public/assets to skip assets pipeline.

Jsrepl is too big/complicated/hardcore for assets pipeline to handle.
On Heroku, deployment will ALWAYS fail if jsrepl is handled by assets pipeline.

I proceed to try out S3 since it's fast and cheap, but jsrepl is using
[web worker](https://developer.mozilla.org/en/docs/Web/Guide/Performance/Using_web_workers)
and that requires the resources to be obey the same-origin policy. But clearly,
resources coming from S3 will definitely not obey this policy unless we
implement some hackery.

So, I think this method should work. :D
Enable word wrap for the editor.
Set up cmd-B shortcut to run code.
Install useragent.
Show tooltip for the run button.
Label the run button as 'Loading' before jsrepl is ready.
Merge branch 'master' into ace-editor
Install angular.ui.ace.
Angularize problem page.

1. Have 2 modes of running code:
   i. Run. Take whatever that the user have right now, and run it,
      without additional processing. Show output/error/result in
      logs.
   ii. Run with test cases. Append task input to use code to
       initialize the input variables.

What's not working:
1. Can't submit yet. No proper form/Angular code to make actual
   request.

2. Can't show the solved or not status yet. The template is there,
   but the model is never initialized.

3. Can't show points scored vs total points yet. Again, template is
   there, model not initialized.

4. Can't show number of submissions left for each task yet.

5. Can't properly display task input yet. Need to differentiate between
   multifields input or not. Anyway, multifields input MIGHT be
   deprecated soon.

To address 1, just need to include correct HTML form. Need additional
Angular code to enable "Submit all" (which is cool).

To address 2, 3 and 4, need to implement additional API endpoints.

To address 5, just need some additional hard work. :laughing:
Can submit answers now.
Show solved status and points on problem page.

Since each submission will do a full page refresh, just let Rails
render those values.
Modify #to_h for Problem and Task to take in an optional user and show more details relevant to the user.