Introduce DependencyNotFoundException

 * it unifies the concept of missing dependency failure
 * it also stores the metadata about the missing dependency/artifact
   so that in can be later used in reporters and filters
Store additional metadata in BomDependencyNotFoundException

 * info about missing artifact and root dependency node can
   later be used in reporters and filters
Reporters now use metadata from *DependencyNotFoundException
Introduce the concept of ExceptionFilter + three basic implementations
Plug the exception filtering into the AppRunner
Store also validated artifact info in the DependencyNotFoundException

 * storing the artifact then enabled matching on the on it in the
   exception filter (instead of the file based matcher so far)
 * BomDependencyNotFoundException is now subclass of
   DependencyNotFoundException as they share much in common and
   the "is a" relation holds.