Add `gds#find`

Based on feedback from @maxdemarzi, introduce a `gds#find` method that replaces `gds#findNodesByLabelAndProperty` and `ggo#getAllNodesWithLabel`.
Don't get me wrong here, I very much like #find(), and I'd like this PR to be merged in some form the next few days. However, once a method goes into this interface, it takes a very long time to get it back out (eg. until the next major release). Exploring the implications here and trying to poke holes is a useful process, you guys should help me with that. 

Take a composite index spanning a pattern, like: [User(name), VISITED[time], City(name)]. This could easily be expressed, like CL noted, with a higher level predicate. Now the signature is:

    GDS#find( Predicate p )

This method is now locked to a single return type. If, however, we have it call the entity type out, it becomes much more powerful:

    Iterator<Node> findNodes( Predicate p )
    Iterator<Path> findPaths( Predicate p )
    Iterator<Graph> findSubgraphs( Predicate p )

Now. This is 1) a construed example of functionality that we don't know will ever be implemented in the core api and 2) only one alternative. We could also have a predicate type that expressed the return type, which may be cleaner. However, now you are mixing concerns and now its starting to get hard for the user to "just know" how to use the API. Figuring out how to use a method like below is hard to do from within your IDE (how do I create a predicate? What does this method find?):

    <T> T find( Predicate<T> p )

The only argument I can see for having just #find() is that it is clean. However, I think there is a reasonable case that it may create ambiguities over time, and findNodes() is pretty clean too.