backend truncation & depth support

Brings over backend changes made by Kahn Academy’s appengine-mapreduce
(https://github.com/Khan/appengine-mapreduce).

Notably:
* `get_status_tree` supports a `depth` parameter, to enable non-root
pipeline lookup. Executed with new methods `db_get_in_batches` and
`get_pipelines_within_depth`.
* `_LowMemoryPipelineRecord` and `_LowMemorySlotRecord` add truncation
support for pipeline parameters.
* `get_pipeline_values` provides a means to load full values from a
pipeline.
* `_PipelineValuesHandler` is a status handler that retrieves full
pipeline values for the UI.
* `_register_json_primitive` and the `_TYPE_TO_ENCODER ` map use the
name of a type, rather than it’s class, for the case of unexpected
classpaths.
add *.pyc to .gitignore
UI support for depth and truncation

Adds support for `pipeline_values` de-truncation from the `status_ui`
handler.

Enables `depth` query string argument to enable non-root pipeline
inspection.
allow pipeline class to specify "MAX_ATTEMPTS"

Enables a pipeline class to provide its own value for
`_DEFAULT_MAX_ATTEMPTS`.
root_pipeline_key property

Provide `root_pipeline_key` property to fix UI and prevent the strain
required by using
`_PipelineRecord.root_pipeline.get_value_for_datastore(pipeline_record)`
.
Merge pull request #1 from Loudr/loudr-rebase

Add Pipeline Truncation & Depth Query String Support