no-use-before-define.js respects function declarations

Previously the no-use-before-define.js rule would throw a warning when you reference a named function declaration (i.e. named function defined in Program scope or Function scope, but not in a block or other expression). With this you can now declare your functions at the end of your files or the end of your functions if you prefer. It also allows you to have recursive functions (Yay!!).

This pull request fixes #306 . I didn't check if it fixes issue #302, but it may.

More info on the difference between named Function Declarations and named Function Expressions:

http://kangax.github.io/nfe/