signature builder verify
signature builder verify

Summary:
This diff introduces helpers that verify a signature. Recall that a signature is defined by exports
and a closing environment. Verifying a signature amounts to walking over exports, determining their
dependencies, and recursively resolving those dependencies. Along the way, we demand that
expressions contain only literals and fully annotated references, and that dependencies are
"well-formed" with respect to type/value distinctions. We stop at imports, but in future work we
will make the verification go through imports to *other* exports, and recurse.

Reviewed By: samwgoldman

Differential Revision: D9310916

fbshipit-source-id: 9d4f8888695d105678bbeed88e4a0b8a581f5771

AgentME/flow,popham/flow,facebook/flow,nmote/flow,JonathanUsername/flow,mroch/flow,nmote/flow,samwgoldman/flow,facebook/flow,popham/flow,jamesgpearce/flow,AgentME/flow,popham/flow,jamesgpearce/flow,popham/flow,popham/flow,facebook/flow,AgentME/flow,samwgoldman/flow,facebook/flow,popham/flow,nmote/flow,samwgoldman/flow,gabelevi/flow,AgentME/flow,nmote/flow,jamesgpearce/flow,gabelevi/flow,gabelevi/flow,samwgoldman/flow,JonathanUsername/flow,AgentME/flow,JonathanUsername/flow,jamesgpearce/flow,popham/flow,JonathanUsername/flow,facebook/flow,mroch/flow,gabelevi/flow,samwgoldman/flow,facebook/flow,nmote/flow,mroch/flow,facebook/flow,nmote/flow,mroch/flow,JonathanUsername/flow,samwgoldman/flow,jamesgpearce/flow,gabelevi/flow,nmote/flow,mroch/flow,gabelevi/flow,jamesgpearce/flow,mroch/flow,samwgoldman/flow,mroch/flow,JonathanUsername/flow,gabelevi/flow,jamesgpearce/flow,JonathanUsername/flow