Add a Syncer type to provide options

Instead of using different functions for different behaviors, like
having SyncDel which is like Sync but only deletes extra files, a new
Syncer type is used to hold options as field variables.

So this is how to sync files like the old SyncDel:

    s := fsync.NewSyncer()
    s.Delete = true
    s.Sync(dst, src)

Syncer now has only one field: Delete, but this design gives opportunity
for having more options.