[refactor] mark all base Exception classes abstract and rename them accordingly
[refactor] add a RouteCollcetion class to hold a prioritised list of routes; renamed getWeight() to getPriority()
Merge branch 'develop'