Optimize goal changed

Make goal changed approximately O(paths + targets), instead of something much worse.

Testing Done:
Correctness: https://travis-ci.org/pantsbuild/pants/builds/43764453

Performance: tested on a megachange branch on Twitter's monorepo; previous time was on the order of hours; time with patch is 3 minutes.

Reviewed at https://rbcommons.com/s/twitter/r/1470/
Handle UTF-8 in thrift files for python

Testing Done:
Ran new tests (red/green/go)

Reviewed at https://rbcommons.com/s/twitter/r/1459/
Move GoalRunner to the bin package, together with pants_exe.py.

Gets rid of the command package.

Testing Done:
Pants builds. Dev and regular pants work.

Reviewed at https://rbcommons.com/s/twitter/r/1471/