Fix typo
Add a way to assign an id to an Async
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.
Add init files for extras.appengine

Need location to add a persistence module for app engine
Add module to contain ndb persistence code
Add module to contain Context Job completion
Add imports for function serializing
Merge branch 'configuration' into patched_master
Add config import to completion_marker + test module
Add gitignore directives to keep out PyCharm metadata
Add persistence id handling functions

A context and each Async that is part of it needs unique ID
and since a graph will be used to join all of them, the internal
nodes/vertexes of the graph also need an ID too. The ID of every
Async will be prefixed with it's parent node ID, to allow it to find
the parent. leaf_persistence_id_from_group_id combines the parent
ID with a new id for it's child. leaf_persistence_id_to_group_id returns
the parent ID from a child node.
Add function needed to analyze the graph
Fix a problem from a merged cherry-pick
Change the name of the 'ndb' persistence module
Corrected config and marker tests

I was using patch improperly to just import modules
so changed them for regular imports.
I remove the config test that only passes if a user's
furious.xml is present, which wouldn't exist in furious itself
Remove _persistence_id from Async

This will be replace with id instead.