Merge pull request #63 from matthewvogt/presence-updates

Testing PR 62 in 'next'
Add AutoSavepoint database utility

Savepoints, unlike transactions, can be freely nested. They can be used
when inside a normal BEGIN/COMMIT transaction or independently, and in
the latter case will behave like a normal transaction.
[libcommhistory] Add extraProperties API to Event

Extra properties are arbitrary key/value properties that can be attached
to an event. They're intended to be used for temporary or uncommon
values attached to an event, since they are more expensive to query. The
immediate use case is certain MMS-related properties, and it will also
replace some of the less commonly used properties of Event.

A database flag is used to avoid the query overhead when no extra
properties exist on an event.
Merge branch 'master' into next
Merge branch 'master' into next
Merge branch 'event-extraproperties' into next (#72)
Avoid hardcoded field numbers in event query
[libcommhistory] Remove unused properties from Event

parentId is only relevant for SMS folders, which no longer exist.

Encoding, CharacterSet, and Language have no database representation or
use in this design.

isDeleted is not implemented and serves no purpose, but did have a
database field, which will need to be removed at some later point.
Remove remaining pieces of old MessagePart loading code
[libcommhistory] Update MessagePart API
[libcommhistory] Store MessageParts data for events in sqlite

This is implemented similarly to extra properties. The message parts
will be queried after reading an event if a flag indicates that they
exist.

This does not store actual data, only metadata related to the parts
(including the path). Actual data storage and handling is left to users.
Merge pull request #74 from special/messageparts

[libcommhistory] Implement message parts with SQLite