Sprint6

@prabinv @tsanko @texasag & @kevinsproles (cc @tylertadej )

This PR brings sprint6 to a close. It includes the following stories:

- 29252 spike to determine what code can be moved from method into toolbox
- 29998: refactor app.js (method code ported into toolbox)
- 29999: refactor main.js (method code ported into toolbox)
- 30000: refactor home.js (method code ported into toolbox)
- 30002: refactor header.js (method code ported into toolbox)
- 30003 refactor product.js (method code ported into toolbox)
- 30004 refactor category.js (method code ported into toolbox)
- 30005: refactor search.js (method code ported into toolbox)

## Things of note that were added as part of the above: 

- Script folders are moving closer to a true component app organization structure with hyphens for readability
- vnViewPortWatchService (With enquire) so theme can define / override default media query breakpoints and provide their own functions for what happens when they trigger
- Added the busy-animation directive
- Added the nag-menu (smart nav) directive
- Added the nag-menu-mobile directive
- Added the product-image directive
- Added product-search: directive and service
- Added formatted-currency filter
- Added _dist.js for the toolbox