orderBy and Sorter to manage list sorting

This PR introduces two new utilities to manage list ordering: orderBy and Sorter. As you will see orderBy is very convenient for simple cases, whereas Sorter (that internally uses orderBy) provides more advanced features:

```
{template list(persons)}
    <div onselectstart="return false"> 
        <div class="msg">
            <span class="info">
                List sorted with the orderBy() function:
            </span>
            <ol>
                {foreach p in persons|orderBy:"name"}
                    <li>{p.name}</li>
                {/foreach}
            </ol>
        </div>
        <hr/>
        <div class="msg">
            {let nameSorter=new Sorter({property:"name",states:"ADN"})}
            <span class="info">
                List sorted with a Sorter object (current state: {nameSorter.state})
            </span>
            <ol>
                {foreach p in persons|nameSorter}
                    <li>{p.name}</li>
                {/foreach}
            </ol>
            <a onclick="{nameSorter.nextState()}">Change sort order</a>
        </div>
    </div>
{/template}

var people = [
    {name:"Homer", age:38},
    {name:"Marge", age:38},
    {name:"Bart", age:10},
    {name:"Lisa", age:8},
    {name:"Maggie", age:1}
];

// display the template in the #output div
list(people).render("output");
```
Both features are published on hsp.global, so they don't need to be required and are available everywhere.