Split the RouteTrackerException class into seven classes

Split the RouteTrackerException class into seven different exception
classes; one for each different kind of exception. The exceptions are
now more readable and allow use of default RuntimeException constructor
that takes a Throwable.