order layers by MRO before doing topological sort

Currently the test runner sorts layers by name and then does a topological sort to make sure that a layer runs after the layers it depends on. This is suboptimal if there are many layers that share ancestry; it doesn't do anything to make sure those layers run consecutively, so we end up setting up and tearing down layers more than necessary.

This changes order_by_bases to do an initial sort by reversed MRO instead of by name so that layers with shared ancestry end up adjacent. This appears to speed up Plone's tests by about 30%.

I haven't run the zope.testrunner tests yet with this change, so let's see what travis says...
I tried that first, but the function is called with a dict in one case (in which case we want the keys) and a list in other cases.