`goal repl` consumes targets transitively

- Partition by selected language vs all other languages to allow for handling of 'dependencies'/'jar_library' and other inner nodes
- Filter the entire context, rather than just target roots
- Label JarLibrary as a JVM target (and fix related fallout)

Testing Done:
new unit test
manual validation of mixed/scala/python contexts:

-----
PANTS_DEV=1 ./pants goal repl src/scala/com/pants/testproject/unicode
...
scala> com.pants.testproject.unicode.shapeless.ShapelessExample.greek()
res1: String = shapeless success
-----
PANTS_DEV=1 ./pants goal repl src/python/example/hello/greet
...
>>> from example.hello.greet.greet import greet
>>> greet("yo")
u'\x1b[32mHello, yo!\x1b[0m'
-----
PANTS_DEV=1 ./pants goal repl src/scala/com/pants/testproject/unicode src/python/example/hello/greet
...
FAILURE: Mutually incompatible targets specified: PythonLibrary(BuildFileAddress(/Users/stuhood/src/pants/src/python/example/hello/greet/BUILD, greet)) vs ScalaLibrary(BuildFileAddress(/Users/stuhood/src/pants/src/scala/com/pants/testproject/unicode/shapeless/BUILD, shapeless))
-----

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