Smart build

**not ready for merging yet**
We use the analysis engine to figure out the transitive library imports. If it imports dart:html, it's a web app, and a CLI app otherwise.

The analysis server will likely give you this info soon. So you could use that.

However, I'm now in favor of a bit more heuristic based approach. So, using things like location in the package, and maybe very causal parsing of the file, to determine how to launch it. Perhaps having a way to launch an app that guesses how to launch it, but have different, more explicit ways to launch as well. So:
- run
- run web app
- run CLI