Allow more flexibility with custom search functions, including for search buttons.

This pull request adds a `sortFunction` option to the list options, and calls all sort functions in the context of the options object for that request.
I need this so I can easily do the following whilst using class="sort" buttons
```javascript
var list = new List('list-container', {
	sortFunction: function(a, b) {
		return list.sort.naturalSort(a.values()[this.valueName].replace(/,/g,''), b.values()[this.valueName].replace(/,/g,''), this);
	}
});
```
which allows me to format numbers using commas (eg 1,000,000) whilst still having them sort correctly.