Merge in changes from Ivan's old repo

@ivmarkov -> Here are your commits from your old repo.

Want to double check that nothing is missing?  I had merge conflicts on ChromeAppLaunchConfigurationDelegate, and I'd like you to verify I resolved them correctly.

Feel free to hit the merge button at will...  ...This will hopefully be the last big refactoring, right?