Template rules (implement #45)

I made support for template rules. The rule can be parameterized by other rules / expressions. All references inside template rule with name of template parameter refer to parameter, superimposing visibility scope of the rule with a similar name.

At the moment parameters can't be templates, i.e. such construction is forbidden:
```
Apply<X, Y> = X<Y>;
```

Perhaps, further I will make its support.