Implement Pipeline.Empty

This is a convenience to allow creating an empty tree as part of a
pipeline. Since creating an empty tree, like any other tree, requires
repository access and therefore I/O, it could fail. This makes it a good
candidate for incorporation into a pipeline.

There is an upcoming patch to use this as part of Tree.Mkdir.

Signed-off-by: Solomon Hykes <solomon@docker.com>
Pipeline.Add accepts a nested Pipeline as value.

This can be used to construct more powerful pipelines: for example
2 pipelines could be combined into a single tree, all in a single
beautifully concise one-liner :)

Signed-off-by: Solomon Hykes <solomon@docker.com>
fmt

Signed-off-by: Solomon Hykes <solomon@docker.com>
3-part API: Repository, DB, Tree

* A Repository is a store for many Trees and DBs. It maps to a git repository.
* A DB is a named, mutable scope in a Repository. Its value is a Tree. It maps to a git ref.
* A Tree is the fundamental data structuer. It is content-addressed and immutable. It maps to
	a git tree.

Signed-off-by: Solomon Hykes <solomon@docker.com>