In this commit, the testing framework used in dep is moved to the
test package, since it's used either in dep and main.
All the code that is not part of a command has been moved to the
dep subpackage, as well as all those functions that were shared between
dep and main, since dep cannot depend on main.
Because of the movement to another package, many structs, methods and
functions have become public.
manifest and lock's MarshalJSON methods were previously returning
HTML-escaped, unindented byte streams. Now they do that work internally,
and more gracefully via a json.Encoder.
* Basic first pass at JSON-based manifest
* Add rudimentary ReadManifest() tests
* Implement gps.RootManifest methods on Manifest
* Add copyright headers
* Fatalf on test that invalidates later checks
* Rewrite TestDependencyConstraints comment as TODO
* Consolidate types package back into main