[#1815] Add "distinct" param to datastore_search

This allows the users to get only the distinct values of the query. The "total"
field on the returned data is related to all fields, not only the distincts.
For example, in our test we have the data:

```json
[
    {"author": "tolstoy", "title": "Anna Karenina"},
    {"author": "tolstoy", "title": "War and Peace"}
]
```

We want to get a list with all authors on the datastore resource. Then we query
the "datastore_search" with:

```json
{
    "resource_id": "the_resource_id",
    "fields": ["author"],
    "distinct": True
}
```

The result is;

```json
{
    "success": True,
    "total": 2,
    "records": [{"author": "tolstoy"}]
}
```

Note that even though there's only one returned record, the "total" field is 2. This is because "total" doesn't take into account the distinct values, but all rows that match our query.
[#1830] datastore_search accepts multiple filters values as array

With this patch, if you query the datastore_search with filters:

```json
{
    "filters": {
        "country": ["Brazil", "Argentina"]
    }
}
```

It'll return the rows that have `country IN ("Brazil", "Argentina")`. I had to
change the `datastore_search` extension point on `IDatastore` because I needed
the fields' types. I needed the fields' types because the Datastore accept
fields with array type (e.g. `_text`). When filtering a field that has an array
type, I want to query literally.

In the sample query above, the Datastore can create two different queries,
depending on the type of the `country` field. If it's not an array type, it'll
do as I described above, querying `country IN ("Brazil", "Argentina")`. If it's
of an array type, it'll query literally `country = ["Brazil", "Argentina"]`.
[#1830] Keep the fields' order
[#1830] IDatastore.datastore_delete() receives fields_types

This is to keep it consistent with .datastore_search(), and make the code
started in d3761f8 work.
[#1830] IDatastore.datastore_validate() receives fields_types

This is to keep it consistent with .datastore_search(), and make the code
started in d3761f8 work.
[#1830] Fix python2.6 support

To do so, we need to add the "ordereddict" requirement.
[#1830] Use OrderedDict from ckan.common to fix python2.6 support
Merge branch '1815-distinct-datastore-search'
Merge branch 'master' into 1830
[#1830] Add tests for multiple filters on same field
Merge branch '1830-querying-multiple-values-on-the-datastore'
Small typo
Merge pull request #1848 from morty/small-typo

[#1848] Small typo