Как правильно использовать синглтон Бд?
правильно использовать инверсию зависимостей и передать готовый объект класса соединения в нужную модель. Синглтон это антипаттерн, зачем он вообще тут?
> Вопрос в том, где создать объект класса Db?
Реализация подключения к базе данных никакого отношения к контролером не имеет.
Класс Db - это системный класс вашего фреймворка. 
Вопрос где размещать его, это ваши предпочтения, на мой взгляд было бы логично разместить его, например, в папке systems. Все зависит от того как вы спроектировали логическую структура вашего фреймворка.