Should we consider using implementing an interface instead of having a main function for `build.dart`? This would be in the style of the `Builder`s of `package:build`. Pros: * Visibility of conceptually different invocations of main: * dry-run vs build * before kernel compilation and after (edit: or build vs tree-shake) Cons: * It will be harder to make another implementation. It would be going in the opposite direction of https://github.com/dart-lang/native/issues/95.