Я считаю, вы тратите время зря на изобретение велосипеда. Мало того, что тратите своё время, так ещё и хотите, чтобы другие тратили время вместе с вами.
Возьмите готовый фреймворк, например, Symfony или Silex, и используйте.
Если хотите разбираться в теме, просто читайте код их роутеров, отлаживайте и добивайтесь полной понятности. Потом, если будет желание, можете написать свой, мега-оптимизированный, или с же с блекджеком и девушками.
По вашему же - я глянул очень бегло, но то что заметил:
1. очень низкая гибкость - например, класс Router никак нельзя параметризовать, приходится подстраиваться под его требования.
2. глобальные переменные и константы - это плохо. в том числе использование текущего запроса (GET) и манипуляции с ответом (header).
3. всё запутано, например, при чтении класса Router совершенно непонятно, откуда возьмётся $this->routes->current, а чтобы понять, где хранится конфиг роутов, нужно прочитать оба класса Router и Routes полностью.
Вам стоит познакомиться с принципами
SOLID