Re-worked ParentRunner changes

Re-worked changes in ParentRunner for not executing
BeforeClass/AfterClass/ClassRules when all tests are ignored. The class
now determines whether any runnable children remain by calling
isIgnored/1 on each child returned by getFilteredChildren/0. 
Because of this simplification, this changeset resets many parts of the
class to their state on the current master branch.