Lps 51758

Brian, just in case you wonder where this is going...

The end goal is, we get rid of all customized JUnit Runners.

There are several bad things about the Runners. The top 2 that affect us most are:
1) Runners can not be used the together, as a result we have to inherit, but that only solve a tiny piece of the problem, and making code really messy. (With Rules, they can be easily aggregated without any inheriting)

2) Runners expose too much JUnit internal apis, the more we use it, the tighter we bind to JUnit (not really suggesting to move out JUnit, but tightly depends on something's inner api is always a bad thing). 
For example, I actually tried to update to junit 4.12b3 for some of its new features. But we can't, because it breaks powermock, therefore breaks all our tests that are using powermock. powermock is reflecting a lot JUnit internal stuff, and since junit 4.12, it changed a lot. We will have to wait powermock to fix their code or get rid of powermock in order to be able to upgrade junit. (I don't have to use those new features of junit, it is just nice to have, we can worry about the upgrade later if powermock still has not fix their issue by then )