Don't pass along unnecessary flag.
Make binder methods private.
Introduce the concept of a root decl.

A root decl can store all the information shared by it and
any of its child declaratoins (for example, the filename it
was generated from).  This allows us to save space on all
our decls (at the cost of logarythmic access to that information
from any decl).  In practice this has no slowdown for us.

The end goal is to allow us to store more information at the
decl level without having to bloat all decls.
Emit fixes for ambient enums
Unable to get property "actualParametersContextTypeSymbols" of callResolutionData exception
Remove global semantic info chains and binders.

Now, the compiler itself owns the single semantic
info chain for the system.  The chain itself has
a mapping from file name to binders.

I've also added a link from root decls to the semantic
chain.  With this link it's now possible for a decl to
bind itself to a symbol as it can get the appropriate
binder from the chain that it points to.
Add doc comment.
Move methods from semantic info to the chain.
No need for the decl collector to hold onto a semantic info.
No need to have a pointer to the default case clause in a switch statement.
Point ast nodes back at their parents.
Expose file names off of AST nodes.
Now that AST nodes expose the filename they came from, we can simplify many APIs that used to take both.
Simplifying creation of diagnostics for ast nodes or decls.
No need for the binder to hold onto a specific semantic info anymore.
No need for the resolver to hold onto a semantic info.
Stop exposing individual semantic infos.

Inidivudal SemanticInfos are not an implementation detail of the
semantic info chain.
Rename fields.
Decl collection context has no need to track a file name.
With all the recent refactorings, there is now no need for an individual binder per file.