Correct Async.from_dict to not mutate source options dict.

Async.from_dict mutated the options passed in as the argument.  Such
unexpected mutations are not friendly and may be dangerous.
Transplant encode / decode callback logic to job_utils.

The callback encoding logic is required by other objects as well, such
as Context.  Because of this, they should be split into a more "neutral"
location than async.py.
Fix broken unit test around default pull queue for messages.
Add MessageProcessor and insert_messsage_processor to batcher

Add MessageProcessor Async object to the batcher module. This object will
insert a task to pull tasks off a pull queue. It will try to insert them
serially using a memcache marker based off a time frequency formula.

Add insert_messsage_processor function that wraps creating a MessageProcessor
and inserting it.
Removing helper function for batch processor.
Add bump_batch method for incremeting the batch count.

Increments memcahce buy a key.
Convert Context to take options kwargs.

To facilitate future extensions, switch from named insert_tasks
injection parameter to fetching it from options.  This will keep the API
cleaner as additional injection points are added.
Add `id` to Context.

`id` will be used to group asyncs withing the Context and also to
facilitate access to the Context's state once persistence is
implemented.
Merge branch 'master' of wfgithub:WebFilings/furious into persistence-api
Merge branch 'master' of wfgithub:WebFilings/furious into persistence-api
Alter Context _insert_task setting logic to validate function.

Require a callable function to be provided for insert_tasks, or nothing
at all.  Specifying any non-callable value is considered an error.
Adding to_dict method to Context to facilitate persistence.

Context objects need to be encoded so that they can be passed between
requests and / or persisted.  A first step of this process is encoding
Contexts to a JSON serializable format.
Add from_dict method for Context to produce a Context from a dict.

from_dict is the inverse function of to_dict on Context.  This is
required to facilitate the reconstitution of a Context that has been
encoded and persisted to disk.
Merge branch 'master' of wfgithub:WebFilings/furious into persistence-api
Add persistence API to Context.

Add high-level persistence API interaction to Context.  The API is very
minimal, requiring the persistence engine only to implement a
"store_context" function.
Add Context.load method to load a context from a persistence_engine.

Context.load will load a Context object from the given
persistence_engine.  The API requires only that the persistence_engine
implement a load_context function that returns a dict loadable by
Context.from_dict.
Merge branch 'master' of wfgithub:WebFilings/furious into persistence-api
Rename context.from_dict options parameter to clarify logic.
Merge branch 'master' of wfgithub:WebFilings/furious into persistence-api

Conflicts:
	furious/async.py
Merge pull request #22 from WebFilings/persistence-api

Persistence API