Ensure that AnalysisContext futures are completed when context disposed.

It's possible for the analysis server to create or destroy contexts in
the background while the user is working (as a result of changes on
the filesystem).  This ensures that if any code completions are
waiting for analysis when that happens, they are aborted.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//807993002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@42416 260f80e4-7a28-3924-810f-c04153c831b5
Add a CommandRunner class for dispatching commands to args.

This was extracted from pub's dispatching logic.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//797473002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@42418 260f80e4-7a28-3924-810f-c04153c831b5