move discovery implementation classes into subpackage and implement waiting for discovery to complete before returning relationships. Account for errors during this waiting too, using a new error event to signal when parsing of a POM fails (for instance). Key error tracking by a more complex object than a simple string.