MongoClient.connect реализован в middleware

* в дальнейшем это позволит хранить ссылку на монго в вездесущем
  объекте req експресса;
  req.db.collection('indigoJobs'); -- примерно так;
Соединения с монго удалены из маршрутов

* наконец-то это уродство можно выкинуть -- база теперь доступна
  из экспрессовского объекта Request (он же req);
Добавлена проверка наличия метода в node

* как происходит обработка входящего запроса:
  если запрос на data/json/fetchJobs, будет выполнен fetchJobs();
  если запрос на data/json/pushJob, будет выполнен pushJob();
  если запрос на data/json/x, будет брошено исключение, потому что
  метода x() нету;
* теперь, прежде чем выполнить x(), мы проверяем, тварь ли дрожащая
  или право имеем выполнить такой метод;
Добавлена проверка наличия заданий в indigoJobs

* если заданий в indigoJobs нет, а запрос на них пришел, то нода упадёт;
* это как-то неправильно...
Объект model вынесен в отдельный файл

* тут будет логика приложения, без привязки к веб-контексту;
* по аналогии с тем, как наши импозеры в Иллюстраторе знать не знают
  ни о контроллере, ни о монго, ни о ноде на 8080 порту, здешние методы
  не будут иметь представления о запросах и маршрутах вокруг них;
TemplateScanner -- создание задания в mongo

* вместе с заданием отдаётся массив существующих в базе шаблонов;
* если в задании установлен параметр rescan, то база шаблонов
  сбрасывается и сканирование происходит "с чистого листа";
TemplateScanner -- фильтрация массива шаблонов

* уже отсканированные шаблоны повторно сканироваться не будут
TemplateScanner -- валидация шаблонов

* после открытия шаблон проверяется на наличие необходимых слоев
  и графических стилей;
* если чего-то не хватает, шаблон так же попадает в базу, но с
  пометкой `error` и описанием ошибок;
TemplateScanner -- повторное сканирование

* выборка готовых шаблонов из базы теперь происходит по признаку "done";
* таким образом, ошибочные шаблоны не попадут в выборку, соответственно:
* шаблоны не прошедшие валидацию будут отсканированы повторно;
TemplateScanner -- обновление коллекции шаблонов

* вместо insert используется метод findAndModify с опцией upsert:
  если записи нет, она вставится;
  если запись есть, она обновится;
* если использовть insert, повторно отсканированные шаблоны будут
  дублироваться в коллекции, а так они обновляются;
estk тест открытия несуществующего шаблона

* к TemplateScanner-у отношения не имеет, это BaseImposer...
* но написал же уже, выкидывать жалко!
Merge branch 'template-scanner' of https://github.com/robespier/indigo into template-scanner