[Contact] Expose interfaces and refactor unit test

According to spec, interface of Contacts, ContactField, ContactTelField,
etc. should be exposed to user.

Also including fixing of finding option, impp handling, and note data map.
Merge pull request #1318 from deqing/contact-unit-test

[Contact] Refactor unit test