Convert to NS_ENUM
Just use a background queue instead of a separate NSOperationQueue. Also improve  the cache management so we only actually sync when necessary.

Signed-off-by: Blake Skinner <bskinner@mit.edu>