When checking for 'this', ignore FunctionDeclarations as well.

Note that require("ast-types").namedTypes.Function is a common supertype
of .ArrowFunctionExpression, .FunctionExpression, and .FunctionDeclaration.
Previously this code was only ignoring FunctionExpressions, so binding
would happen (harmlessly but unnecessarily) if there were any
'this'-containing functions declared inside an arrow function.
Modify node in place, rather than creating a replacement.

The main benefit here is that we can just switch node.type to
'FunctionExpression' and not worry about replicating its other properties,
since FunctionExpression and ArrowFunctionExpression have the same fields.

In particular, I'm anticipating that Function nodes will eventually
support an .async property, and I would like that to get carried over no
matter what version of ast-types is used.
Make sure to set node.expression = false after blockifying.
Merge pull request #6 from benjamn/modify-node-in-place

Modify node in place, rather than creating a replacement