Implement a simple type language

Summary:
Depends on D6794. Ref T2039. This implements a simple type language so we can typecheck things (like Conduit method calls) easily. For T2039, I want to typecheck a JSON file without writing a zillion lines of custom parser code.

I codegenerated the parser since it takes around 125ms to build.

Test Plan: Ran unit tests.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2039

Differential Revision: https://secure.phabricator.com/D6795