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
Merge remote-tracking branch 'refs/remotes/upstream/master' into bower-support-transitive-deps

Conflicts:
	ide/app/lib/package_mgmt/pub.dart
Fix merging problems
Package management refactoring: move Pub/Bower common code to PackageManager

95% happy with the result. Not happy with the way isXyz() family of functions ended up organized. I'd probably prefer to have them defined in PackageManager only, using pure abstract packagesDirName() and packageSpecFileName() methods concretely defined in the descendants. However, the codebase uses PubManager.isXyz() in a lot of places, and in a couple of them, an object of PubManager was unavailable.

I might attempt to reshuffle all this a little bit later.
Manually revert db1484e2 "First version of transitive dependency fetching" for cleaner diff

A newer version of transitive fetching is ready anyway.
Switch from static to instance API for PackageManagerProps + added PackageManager.props

This is to generalize working with package management. Most clients should not explicitly refer to either PubProps or BowerProps, but use polymorphic PackageManager.props -> PackageManagerProps instead.
Static var + method pairs -> just methods in PackageServiceProps; other small changes
Fixed a typo
Simplified PackageServiceProps even more
Merge remote-tracking branch 'upstream/master' into bower-support-transitive-deps

Conflicts:
	ide/app/spark.dart
Manually resolved merging conflicts
Review comments: props -> properties
Merge commit '6438cf49569e07fd1a9db1037e602c436137f5a4' into bower-support-transitive-deps
Address review comments: make setting/getting self-reference a no-op for Bower
Merge pull request #1514 from ussuri/bower-support-transitive-deps

Factor out shared Pub/Bower code to abstract PackageManager, use it wherever possible