refactor(app): refactor app layout to conform to best practices

This is the first stab at moving the app to the best practices documented here: https://docs.google.com/document/d/1XXMvReO8-Awi1EZXAXS4PzDzdNvV6pGcuaF4Q9821Es/pub. Obviously the README needs updating to reflect the change, but I figured this was a good place to start the discussion.

NOTE: the karma configuration explicitly adds the version.js file, because order matters.