Blockly bundle locales

This PR dramatically reduces the amount of time to build our Blockly-based JavaScript apps.

Before (only building English and pseudolocalized locales):
```
$ time grunt rebuild
[...]
Done, without errors.

real	0m37.081s
```
After (building ALL locales):
```
$ time grunt rebuild
[...]
Done, without errors.

real	0m15.949s
```
It also reduces the payload size of the final files:
Before:
```
196218 /en_us/bounce.min.js
160441 /en_us/calc.min.js
227974 /en_us/eval.min.js
193261 /en_us/flappy.min.js
154157 /en_us/jigsaw.min.js
278952 /en_us/maze.min.js
341921 /en_us/studio.min.js
274640 /en_us/turtle.min.js
167866 /en_us/webapp.min.js
```
After:
```
 48375 /bounce.min.js
 12458 /calc.min.js
203850 /common.min.js
 18625 /eval.min.js
 45315 /flappy.min.js
 13356 /jigsaw.min.js
132228 /maze.min.js
117503 /studio.min.js
128540 /turtle.min.js
 25735 /webapp.min.js
```

The only tradeoff is that we now load four `script` tags in our `_blockly.html.haml` view partial, instead of one, to grab the proper localized strings from for the app-specific and the common bundles:
```haml
  %script{src: "#{blockly_path}js/common#{pretty ? '' : '.min'}.js"}
  %script{src: "#{blockly_path}js/#{js_locale}/common_locale.js"}
  %script{src: "#{blockly_path}js/#{js_locale}/#{app}_locale.js"}
  %script{src: "#{blockly_path}js/#{app}#{pretty ? '' : '.min'}.js"}
```

(edit: Separating out the dev-mode scripts stuff into a separate pull request.)
This duplicates rake build:blockly in the top-level Rakefile so please don't add this file. Please adjust that file if --no-optional is a required flag, and if dev should be passed to grunt when rack_env?(:development).