Contacts: Move vCard validation and repair to SabreDAV subclasses.
Updated header:
Fix variable name.
Use VObject\StringUtil::convertToUTF8() to decode v. 2.1 properties.
Also set version when upgrading.
Upgrade: ENCODING: BASE64 -> 'b' and format image mime types.
Contacts: Read and echo image instead of redirect. Fewer request == faster.
Contacts: Update location.hash on open/close.
Contacts: Trigger hashchange onpopstate.
Contacts: Close contact on empty hash.
Contacts: Use FontAwesome icon-cloud.
Contacts: Fix undefined indexes on search.
Contacts: Select first *visible* contact on load.
Contacts: Construct FN based on N if empty
Contacts: Make sure multi value fields are saved in correct order.
Contacts: Test for more ways to construct name.
Contacts: Fix copy/paste mistake.
Contacts: Use isAdminUser()
Contacts: Properly escape commas and semi-colons.
Contacts: Namespace CardDAV backend.