Cleaning up start.js

* extract SSL related utils into ssl.js
* Comment each middlware's purpose.
* Split static_root from static_dir when deciding on the static directory.
Start to set up for grunt.
Set up client side modules.
Use the right namespace for static_dir
Preprocess include.js to get the data collection server from config.
include.js is generated now.
Remove d3.chart.
es5 is enabled by default
Add grunt build, uglify tasks.

* Serve up unconcatenated resources in dev mode, concatenated in prod
* Fix lots of jshint errors
* Use <%= app.src %> & <%= app.dist %> where possible.
* Add scripts/run_locally.js and hook up `grunt start`
Set up grunt tasks so the correct config file is used and server can be started in dist mode.
Start with client side Mocha tests