Improvements to the query system

This patchset fixes some bugs in the query system that were detected by the new tests that are also included.
In addition, the ```GetAll``` method now also supports taking a pointer to a slice of pointers as dst, as this is supported by the underlying datastore library.

    // This worked before:
    users := []User{}
    g.GetAll(q, &users)

    // .. and now this also works:
    users := []*User{}
    g.GetAll(q, &users)