-In ResetIterator don't check for Expression.PreviousExpression. Grabbing an undefined value will work with the null check. So if statement that is not needed.
  -ToDictionary will not take an iterator instead of a collection. This way we don't need to materialize an array just to be passed into BuildDictionary. This way we can loop one at a time when building the dictionary and we never have to materialize that array.
  -In Dictionary.Values cache the key's array length. This way we don't need to figure it out on each loop around.
  -Few variable name changes and variable spelling changes.
  -Add the CallbackIterator. Look in the source code for the callback iterator documentation. Currently not used in the source code, but it might be useful in the future if you need an iterator where you don't need to base it off of an array. This way the base collection is never materialized.
Merge branch 'master' of https://github.com/dibiancoj/Linq4Javascript.git