Allow unused FunctionExpression/Declaration param when following param is used

This pull request fixes #311, however I would like another set of eyes to check if this is complete. Right now I am only checking params up until the first ancestor FunctionDeclaration or FunctionExpression, but me thinks that I should check all ancestor FunctionExpressions and FunctionDeclarations all the way up until you reach the program scope.