dynamic template path support

This pull request adds the support of 'square brackets' in expressions - e.g.
```
- {d.person[d.pp]}
- {d.person[d.pp1+d.pp2]}
- {d.person[d[d.prop]].value}
- {d.person[d.pp1][d.pp2]}
- etc.
```
This will work on all expressions (i.e. attributes, text insertion, {if}, {let} statements, etc.) except on {foreach} collection and component references that only support simple paths today (cf. PEG grammar). Those should be updated in future PRs - at least {foreach}, as I feel it is less urgent for component paths.