More gentle refactoring of IvyUtils.
Review Request #1646 - Created Jan. 23, 2015 and submitted
|ity, jsirois, zundel|
- Moved ivy execution logic into the mixin, allowing its interface to be simplified. - An Ivy instance no longer encapsulates an executor. Clients can pass an executor into Ivy.execute() instead. - Don't bootstrap Ivy with the executor intended for it to run in after bootstrapping. Use a subprocess executor instead, like for all other bootstrapping. Allows us to not pass an executor around quite so much. This is another step on the way to reworking the ivy/jvmtask/nailgun triad of confusion.
CI passes: https://travis-ci.org/pantsbuild/pants/builds/47984451