contacts: Privacy Guard support

 * If privacy guard is enabled for the calling process, return an empty
   MemoryCursor (with column names populated) instead of the real dataset.

Change-Id: I78b16f3791706636d51785e46a1f2ec656a3c9d2
Use MemoryCursor code in framework.

That way, we need to fix bugs only once.

Change-Id: Iae3df411462b7adc12aa09a5ea7ec6f01834ac0d