Changed Let to use variable instead of Lambda

Using Expression.Block to express let binding, which allowed support for
VarSet. Needed to changed Patterns.Sequential to use Expression.Block as
well.
Changed While loop to use Expression.Loop
Fix; while loop type was wrong for delegate

Not sure if this is the greatest solution; but works.
Implemented Patterns.ForIntegerRangeLoop
Moved the "Fix" of wrong delegate type

The While loop code was called from other places, so moved the addition
of the Unit type up to there.
Remove unnecessary ActionHelper/FuncHelpers

Documentation for Expression.GetActionType and Expression.GetFuncType
say they support arrays up to 16 & 17 respectively; so removed helpers
that duplicated such functionality.
Merge pull request #2 from manofstick/mutable-variables

Using System.Linq.Expressions .net 4.0+ functionality