Adapt plain status folder to gmail labels stuff.

  * Implements Status Folder format v2, with a mechanism to upgrade an
    old statusfolder.

  * Do not warn about Gmail and GmailMaildir needing sqlite backend
    anymore.

  * Clean repository.LocalStatus reusing some code from
    folder.LocalStatus.

  * Change field separator in the plaintext file from ':' to '|'. Now
    the local status stores gmail labels. If they contain field
    separator character (formerly ':'), they get messed up. The new
    character '|' is less likely to appear in a label.
improvements to the sqlite local status folder

  * Do not inherit LocalStatusSQLiteFolder class from the plaintext
    one.

  * Use some functions already in BaseFolder in both, plaintext and
    sqlite classes.

  * Add a saveall method. The idea is that saveall dumps the entire
    messagelist to disk, while save only commits the uncommited
    changes. Right now, save is noop for sqlite, and equivalent to
    saveall for plaintext, but it enables to be more clever on when we
    commit to disk in the future.

  * Do not migrate from plaintext in LocalStatusSQLiteFolder. That was
    quite hackish, and broke with plaintext v2.
make repository.LocalStatus able to migrate data across backends

If when we request a LocalStatus folder, the folder has to be created,
we look whether the other backend has data, and if it does we migrate it
to the new backend.

The old backend is left alone, so that if you change back say from
sqlite to plaintext, the older data is still there. That should not lead
to data loss, only a slower sync while the status folder gets updated.