Yet more debug

Add some memory usage output if pympler is installed.
Make transforms a warn instead of fatal

Fallback to empty filter. This fixes, for example, losing defined
transforms by deleting a plugin (like the reddit plugin).
Plugin improvements

- Plugins are now evaled in alphabetical order. Plugins should be able
  to rely on one another, so a defined load order is necessary.

- CantoRemote and CantoBackend are now plugin compatible.
Add 'control' key to database

Allow us to store some metadata, like the new canto-user-modified time
stamp.
Improve CantoBackend init

Do init immediately, as would be expected.
Don't write config when we just read it

If we properly validated the config, even if we made corrections to it,
it doesn't need to be rewritten.

This preserves the modified time of the config file.
Add lightweight file sync plugins

These are alpha, but they work for the feed database and config.

Plugins are a definite maybe in the future, but as of now can't be
hotswapped so would require that or some sort of restart (which might be
useful elsewhere too).

This adds sync functionality to the daemon using the new metadata.
sync.py is the foundation, which handles all of the locking and
reloading that needs to happen. sync-rsync.py is a basic implementation
of an rsync sync, where the database is rsync'd to a remote or local
filesystem.

There's still a lot of testing to be done, and the sync.py has a TODO in
it that needs a lot of work (particularly, I have to decide how the sync
will be exposed to the client and how protection guarantees will be
maintained).

Features:

- Supports local movement for NFS/sshfs/Dropbox etc.
- Easy to write new storage methods (see sync-rsync.py)
- Doesn't require canto-daemon running elsewhere, so shared hosts or
  storage services are valid targets.

Caveats:

- sync-rsync requires rsync in your $PATH and on the remote server, if
  you're using one.

- Hasn't been tested without a decent connection, although sync-rsync
  should just fail gracefully.

- It's a bit free-wheeling with bandwidth at the moment. Nothing that
  should make you bat an eye on a modern connection (maybe 10M an hour),
but if you're on a metered connection, or trying to use sync from
Antarctica you might want to think twice.