ExampleGateway allows an empty top-level context (sub-contexts may not be empty)
Checking for a lack of examples is therefore a concern of JavaSpecRunner, with a little help from some predicates in ExampleGateway.
ClassExampleGateway.hasExamples
Replaced ExampleGateway.getExampleNames(Context) with Context.getExampleNames
The query for the root Context has to traverse the classes anyway, and the total amount of data should still be small.
Plus the alternative implementation would require some way to identify Context or parameterize it to a known sub-type that contains the class (b/c context name is not a primary key).
Refactored test contexts
DfsSearch works with streams now