Some design and first stab at a structured data api.

Summary:
My first instinct is to use YAML for structured data schema definitions.
Much easier to read than any other formats. Also accepts javascript as
valid YAML.

The idea behind the go client is to define schemas via go structs and
simply create the YAML schema directly from the client application
source.

Test Plan: Unittests

Reviewers: petermattis, andybons

Reviewed By: andybons

Differential Revision: http://phabricator.andybons.com/D8