yandex-ui/noscript — pull request #192 by chestozo (2014-01-18 22:57:15+00:00)
Title: next: некоторый рефакторинг ns.Model, ns.ModelCollection и совсем немного ns.View

Я тут забабахал рефакторинг.
По сути изменений мало, много косметики и дифф, скорее всего, будет совсем страшный.
Мы уже переключились на эту версию, вроде бы, всё хорошо.

#### Почему я решил это всё замутить?
Главных мотиваций 2:
1) мне нужно было допилить `ns.ModelCollection` так, чтобы он не триггерил `ns-model-changed` в ответ на изменение элемента коллекции.
2) вот этот код мне не давал покоя: https://github.com/yandex-ui/noscript/blob/master/src/ns.modelCollection.js#L133-L147
Но это, скорее, в дополнение к первому пункту.

#### Что сделано?
1) добавились методы у `ns.ModelCollection`: `onItemChanged`, `onItemTouched`, `onItemDestroyed`. Так я решил задачу номер раз. Можно переопределить `onItemChanged`, смотреть что поменялось и дальше триггерить или нет изменение коллекции
новые методы: https://github.com/yandex-ui/noscript/blob/next/src/ns.modelCollection.js#L119-L136

2) **события элементов коллекции больше не проксируются на коллекцию**.
Зачем это было сделано - затрудняюсь понять.
На основные события от элементов коллекции (`ns-model-changed`, `ns-model-touched` и `ns-model-destroyed`) - коллекция просто подписывается.
Часть тестов, которые проверяли, что можно триггерить события на элементе, подписана на них коллекция и коллекция их услышит - удалил.
было: https://github.com/yandex-ui/noscript/blob/master/src/ns.modelCollection.js#L133-L147
стало: https://github.com/yandex-ui/noscript/blob/next/src/ns.modelCollection.js#L104-L116

3) `ns.View` научилась отписываться от моделей
было: https://github.com/yandex-ui/noscript/blob/master/src/ns.view.js#L717-L726
стало: https://github.com/yandex-ui/noscript/blob/next/src/ns.view.js#L290-L300

4) метод `ns.Model.prototype.destroyWith` вынес как статический, но сохранил метод в прототипе
стало так: https://github.com/yandex-ui/noscript/blob/next/src/ns.model.js#L291-L293

5) заменил все попавшиеся на дороге `throw new Error(' ... ')` на вызов нового метода `ns.assert`
сам метод: https://github.com/yandex-ui/noscript/blob/next/src/ns.js#L155-L163
пример вызова: https://github.com/yandex-ui/noscript/blob/next/src/ns.view.js#L312

#### Чего не сделано?
1) хотел порефакторить `ns.ViewCollection`, но понял, что мне это прямо сейчас не нужно и решил не трогать.
2) `ns.View` просмотрел до половины. Дальше не осилил. Решил тоже забить.

Этот PR он такой: не я уверен, что вы готовы на него переходить.
Но у нас ещё есть несколько серьёзных доработок впереди. singleton view, к примеру, хочется заиметь.
Жду / надеюсь :)

/cc @edoroshenko @doochik