Add DSL for enabling 'automatic' syncing from model. close #23

In addition to calling explicit sync actions within controller methods, a
`sync` and `sync_action` DSL has been added to automate the syncing approach
but in a controlled, threadsafe way.

Example Controller/Model

  class TodosController < ApplicationController

    before_action :authenticate_user!
    sync_action :all
    ...
  end

  class Todo < ActiveRecord::Base

    belongs_to :project, counter_cache: true
    has_many :comments, dependent: :destroy

    sync :all, scope: :project

  end

Example Model with Background Worker/script

  # Inside some script/worker
  Sync::Model.enable do
    Todo.first.update title: "This todo will be sync'd on save"
  end
  Todo.first.update title: "This todo will NOT be sync'd on save"

Example always enable syncing for this thread

  Sync::Model.enable!
  Todo.first.update title: "This todo will be sync'd on save"
  Todo.first.update title: "This todo will be sync'd on save"
  Todo.first.update title: "This todo will be sync'd on save"
  Sync::Model.disable!
  Todo.first.update title: "This todo will NOT be sync'd on save"
Merge branch 'master' of github.com:chrismccord/sync