Re-introduce jvm_app.binary.

This maintains support for specifying a JvmApp's binary via a singleton
dependency but favors the dedicated binary kwarg which properly evokes
both the type and cardinality of the argument.

Adds unit tests covering the new kwarg, backwards compat and new
lazy checks that the binary property is valid.

Testing Done:
$ PANTS_DEV=1 ./pants goal test tests/python/pants_test/:all

Bugs closed: 202

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