IronLanguages/main — pull request #81 by SPARTAN563 (2012-09-18 07:53:10+00:00)
Title: Allow LanguageContext to control Scope creation

# Reasoning
Certain languages may have need, or preference, for a certain type of backing store for scopes that they create. In the current implementation, it is the responsibility of the user to ensure that scopes are passed to all execution methods which make use of this backing store type. This introduces the possibility of a user attempting to make use of functionality which is only available when this backing store is implemented, without having provided a scope which makes use of this backing store.

# Solution
The solution is the allow each LanguageContext to control the creation of its default Scope object, thus providing languages with the ability to control what type of backing store is used, as well as what variables are initially available from a scope. This is done by providing virtual methods on the LanguageContext class which in their default state behave the same as the current implementation; and the modification of methods which are responsible for creating scopes to point to the LanguageContext, requesting that it create the scopes for them.

# State
Current implementation changes are non-breaking for existing implementations (insofar as that all unit tests run successfully), and provides the ability for a LanguageContext to handle the initialization of any Scope objects which are used by the DLR.

## Duplicate Reason
This is a duplicate of Pull Request 80, fixing the encoding issue which caused the entire file to be replaced in the last commit. (Thanks GitHub...) This commit will only change the relevant lines in each file.

[CodePlex Discussion](http://dlr.codeplex.com/discussions/395839)