Subclasses of Exception have strange deserialization

We pass these back from subprocs so they need to ser/de correctly, but Exception has special
deserialization. UnreadableArtifact is basically just a sentinel value so subclassing Exception
just adds complexity.

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

Bugs closed: 826

Reviewed at https://rbcommons.com/s/twitter/r/1395/
Replace twitter commons dirutil Lock with lockfile wrapper

Every now and then we see a pants process die without cleaning up its pidfile and subsequent runs in the same workspace hang forever.

This change replaces the twitter-commons dirutil.Lock with a thin wrapper around lockfile's PIDLockFile which prints the owner process commandline or breaks the lock if the owner process doesn't exist.

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

Bugs closed: 816

Reviewed at https://rbcommons.com/s/twitter/r/1390/
docstring: in python_binary(platforms=...) param doc, add an example

add an illustrative example to docstring. What I learned from https://github.com/pantsbuild/pex/issues/16

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

Bugs closed: 591

Reviewed at https://rbcommons.com/s/twitter/r/1386/
Convert setup_py to a task.

Doesn't yet delete the old setup_py command. We'll do that once this code is in and verified to work in production.

Note that python_setup.py and test_python_setup.py are just lightly modified copies of setup_py.py and test_setup_py.py.

Testing Done:
Modified unittests passed. CI passed.

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