Add Pipeline Truncation & Depth Query String Support

Brings over UI updates and truncation support originally implemented by Kahn Academy’s appengine-mapreduce repo (https://github.com/Khan/appengine-mapreduce).

For the python backend:
* `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.

On the UI Side:
* Adds support for `pipeline_values` de-truncation from the `status_ui`
handler.
* Enables `depth` query string argument to enable non-root pipeline
inspection.

This pull requests resolves #1 ! :dancers: :dancer: :dancers: 
I don't think you need the 'or _DEFAULT_MAX_ATTEMPTS' here, the third arg to getattr() provides the default value if 'MAX_ATTEMPTS' isn't found in 'self'