Added e_vcard_construct_full()

This new variant allows construction of a vcard from a string
which is not terminated.
ECollator: fixed e_collator_collate() to allow NULL strings.

NULL strings sort below other strings.
ECollator: Added e_collator_new_interpret_country()

ICU is our best source for parsing locale strings, this
is just a convenience for EBookBackendSqlite to get the active
country code for phone number parsing.
EPhoneNumber: Fixed phone number matching semantics.

Only use the default region code for the purpose of parsing
phone numbers, but disregard the default country code in comparisons.

Also, work around a bug in libphonenumber's C++ implementation
and make sure to properly promote SHORT number matches to NATIONAL
number match strength.

Based on a patch by Patrick Ohly
EBookQuery: Added end marker for the EBookQueryTest enum

Also declare the first member with "= 0", just because we now
use it to index an array, and I'm paranoid/unsure about the C spec
in this case.
Added E_BOOK_INDEX_SORT_KEY to EBookIndexType
Adding new EBookSqlite

This is a complete rewrite for the EBookBackendSqliteDB API,
some improvements here include:

  o Support for e_book_query_exists() and e_book_query_not()

  o ESexp parsing only happens once, least possible processing
    while generating a query

  o Query preflighting stage checks for the validity of a query,
    and also optimizes it, so that the generated statement will
    be as fast as possible

  o Implementation of queries are now much more straigh forward,
    we have a single array of constraint generator functions, one
    for each type of EBookQueryTest

  o General interactions with SQLite is improved, functions like
    ebsql_string_append_printf() and book_backend_sqlite_exec_printf()
    reduce the amount of redundant code

  o Inserts are done with prepared SQLite statements, which should
    buy us optimization on batch inserts

  o Phone number queries no longer require the E_BOOK_INDEX_PHONE
    to work, however they are quicker with the index

  o Auxiliary tables are now created for each multi attribute contact
    field in the summary separately, reducing the amount of rows
    needed to traverse for a match (also adding more flexibility to
    how we handle these multi-attribute fields)

  o Special care has been taken to ensure that we begin write transactions
    with BEGIN IMMEDIATE, allowing us to fail gracefully if and when
    SQLITE_BUSY is returned

  o Schema upgrades are more failsafe, Just add columns needed in the
    summary if they are not already declared, even though SQLite does
    not support "ADD COLUMN IF NOT EXISTS".

  o When searching contacts with a search expression that cannot
    be satisfied by the summary columns, use a fallback built into
    the SQLite instead of loading everything into memory

  o Allow usage of the cursor with fields that are not in the summary,
    both for cursor ordering and filtering.

  o While relocalizing the whole database, care is taken to perform
    the operation in batches, this way EBookBackendSqlite does not
    ever try to load the whole database in memory at once.

  o Region code for phone number parsing is now tied into the locale
    setting and will change as a result of locale changes.

  o While relocalizing and reformatting the e164 phone number attributes
    in vcards, we send notifications for vcards which changed as a
    result of relocalization via a EbSqlVCardCallback which can
    be passed to e_book_backend_sqlite_set_locale()

  o Error codes are refined to be more meaningful in general than the
    traditional E_BOOK_SQLITE_ERROR_OTHER
EDataBook: Changed for EBookBackend set_locale() API change
EDataBookCursor: Changed APIs to permit GCancellable for long running operations.
EBookBackend: e_book_backend_set_locale() now has GCancellable
EBookBackendFile: Ported to new EBookSqlite API

Make use of the new callback in e_book_sqlite_set_locale()
and notify views if contacts have changed as a result of a locale
change.

Rely on EBookBackend implementation for ->notify_update() now.
EDataBookCursorSqlite: Ported to EBookSqlite
EBookClient: Changed for EDataBookCursor API change.
EBookClientCursor: Changed for EDataBookCursor API change (cancellables)
Ported the lower level cursor tests to use EBookSqlite.

Refactored the whole test suite so that it's isolated to
libedata-book, use the EBookSqlite directly.

Now for the majority of test cases, we test with and without
fields in the summary (with an empty summary configuration)
and we also test the EBookSqlite with a callback to fetch
vcards and without a callback.

We also now test for e164 number change notifications in locale changes.
Added case to the book-migration test for basic cursor operation.
test-server-utils: Disable the cache-reaper in the test environment

This causes races, when changing the locale, the previous/complete
test (which is not shut down properly) is getting I/O errors because
the cache-reaper comes to screw up the day.
test-client-cursor-operations.c: Test cursor in fallback mode

Now test the cursor functionality in cases where the cursor
is using sort fields not in the summary (and search expressions
not in the summary).

Also added --filter option, pass a regular expression to filter
which test cases should run

Also increased TIMEOUT tollerance. This needs fixing, backends are not
shutting down properly, locale changes get backed up and take more and
more time as the test keeps running.
test-client-custom-summary: Added various tests

  o Added test for the underscore

    Before we used to only escape the '%' character in LIKE statements,
    but SQLite also recognizes the '_' as a single char wildcard and
    needs escaping.

    This test ensures that the underscore is properly handled.

  o Added query test which ORs the same field

    This helps to test the query optimizer in EBookBackendSqlite, which
    will optimize a query which ORs two multi attribute fields (like
    E_CONTACT_EMAIL).

  o Added tests for the NOT queries

  o Added tests for NOT, AND and OR and as well as some nested AND / OR
    tests which trigger the query optimizer in EBookBackendSqlite

  o Fix expectations for phone number matches, now that the phone number
    comparisons are fixed

  o Added --filter option.

    Pass a regular expression to filter which test cases should run

  o Added test which searches by UID (can trigger bugs if normalization
    is mistakenly done on the UIDs).
test-client-revision-view: Disabled part of the test.

Initial changes are filtered by fields-of-interest, however
change notifications are not filtered, this is because it's actually
faster to just send the vcard as is.