Moved the search algorithms and supporting protocols into their own folder.
Renamed the edge matrix protocol to the more generic edge collection.

The next step is to add an adjacency list implementation, which
satisfies the protocol, hence the generalisation.