Bower support: first version of transitive dependencies fetching

Many problems, but it's a workable start. Future fixes and optimizations are clear and in the works.

Current issues:

1) The same dependency may be fetched multiple times when included from different packages. Moreover, if double-fetching happens at the same time, two instances may stap on each other with unpredictable (?) results.
2) The progress messages are not displayed in Spark for some reason.
3) When fetching comepletes, the workspace doesn't get refreshed even though that is forced in GetPackagesJob via an explicit refresh() call.
4) While downloading Polymer, the following gets printed to the console 1 or more times: "Uncaught Error: NotFoundError: A requested file or directory could not be found at the time an operation was processed."
Exception: NotFoundError: A requested file or directory could not be found at the time an operation was processed.
First small refactoring towards unifying pub and bower managers
Half-way through generalizing package management