Добавлен проход для вывода типов узлов на основе типов узлов действий. Тип узла записывается в свойство `type` свойства-объекта `result`, которое должно существовать у всех узлов.
Добавлен проход для вывода типов узлов на основе типов узлов действий. Тип узла записывается в свойство `type`
свойства-объекта `result`, которое должно существовать у всех узлов.

Типы всех узлов выводятся на основе типов узлов действий (`action`), которые должны быть вычислены заранее,
например, проходом `init-types` (см. следующий коммит). Тип узла может быть либо классом `Type`, либо функцией,
которая при вызове вернет класс `Type`. Последнее может использоваться в том случае, если действие просто
возвращает один из своих аргументов, таким образом, не зная свой конкретный тип, но может его вычислить.

Система типов состоит из следующих типов:
- unit : Тип одиночного символа. Такой тип имеют узлы `any` и `class`.
- range: Тип диапазона символов, совпадает с типом разбираемой последовательности. Такой тип у узлов `literal` и `text`.
- none : Тип, возвращаемый предикатами (`simple_and`, `simple_not`, `semantic_and`, `semantic_not`).
- list : Тип, возвращаемый узлами повторений (`zero_or_more`, `one_or_more`, `range`).
- enum : Тип, возвращаемый узлом выбора альтернативы (`choice`).
- tuple: Тип, возвращаемый узлом последовательности выражений (`sequence`).
- option: Тип, возвращаемый узлом необязательного наличия элемента (`optional`).
- rule : Тип-контейнер для типа правила. Существует по техническим причинам. Только у узлов `rule`.
- ref  : Тип для ссылок изнутри правила на себя же для осуществления рекурсии. Задается у узлов `rule_ref`.
- user : Возвращаемый тип действий. Должен быть задан для каждого действия изначально.

Для не перечисленных выше типов узлов AST их тип равен типу дочернего узла AST (т.е. своего свойства `expression`).
Не меняет структуру AST.

Mingun/pegjs-passes