Teach types about fields.

A type can express the field name -> field type mapping without knowing anything about the value of the field. This is a good thing for the AST parsing stage.
Use the scope name provided by the AST.
Change scope lookup strategy.

In the AST, we only need to know that a name represents a value that is defined and has a type. It’s only when we get to the DAG that we need to find actual values.

Practical implications:
 - we can break the requirement for AST expressions to know where they’re defined (this might’ve caused bugs when re-importing modules with different arguments anyway)
 - we no longer have to construct ast::StructInstantiation nodes for import statements, where they didn’t actually exist
 - we can give slightly more informative ‘no such field’ messages (e.g., value of type foo doesn’t have fields)
 - we can finally implement all manner of file attributes without requiring the file to be defined in the same scope (closes Issue #7)