Use concrete versions rather than ranges for a more reproducible build

This is a simple, but opinionated, change to use concrete versions instead of ranges. This makes the build more reproducible, so later releases or possible snapshots don't cause breakage. The versions picked are the ones necessary to build (and test) system-rules, although it will still run with earlier versions.

I encountered this when a build using system-rules started trying to bring in a snapshot build of `junit-dep` as a transitive dependency. These were then the changes necessary to get it building. Current JUnit releases don't repackage dependencies in `junit:junit`, so `junit:junit-dep` is no longer necessary.