Best practices Refactoring

After some further review of #164 and #210, I have put together this PR.  It takes commits from both of these PRs by @mbroadst and @addisonedwardlee and makes further modifications.

I liked the componentization and folder structure from #164 (`components/version/*`) but the reopening of modules was not inline with the best practices document. Instead I created more submodules (one per file) and added them as dependencies of the `myApp.version` module.

I updated the filename of the `interpolate` filter to match the name of the filter itself. Really I don't like this filter and think it would be good to change this to something completely different going forward. Apart from anything else a filter called interpolation can be confused with AngularJS interpolation `{{ ... }}`.

I liked moving the CSS and image files into an `assets` folder from #210 but this is also not inline with the doc so we just have the `app.css` for now.

According to the doc the end-to-end tests should be separate from the source and spec files, but #164 had included an unnecessary extra folder level.  The doc does not mention where is best to put the `karma.conf.js` file but I prefer it at the root of the project.

I also updated the various config files (npm, bower, karma, protractor) to work with this refactored layout.

I believe that this is a fair combination of the approaches suggested by the two PRs.  @mbroadst and @addisonedwardlee can you comment on how you feel about this update?