support objects as pipe modifiers

This PR adds the possibility to put objects - and not only functions - as pipe modifiers. For this, objects have to implement an *apply()* method that will be called when the expression is evaluated.
Main benefit is to simplify writing and reading of pipe expressions for standard sort/filter/paginate use cases (as suggested by @piuccio in a previous discussion).

This will allow writing things like that (on top of what is already possible):
```
<div class="section2">
        {let nameSort=new Sorter("firstName")}
        Sorted list:
        <ol>
            {foreach p in d.persons|nameSort}
                <li>
                    {p.firstName} {p.lastName}
                </li>
            {/foreach}
        </ol>
        <a onclick="{nameSort.toggleOrder()}">
            Toggle sort order (current: {nameSort.ascending? "ascending" : "descending"})
        </a>
</div>
```