Optionally allow function statements to be used before they are defined

This adds a `"allow-functions"` option to the `no-use-before-define` rule that allows a named function definition to be used before the location that it is defined. This is the same as setting the [latedef](http://jshint.com/docs/options/#latedef) option in JSHint to `"nofunc"`.

This pattern is commonly used in asynchronous code, see [Callback Hell](http://callbackhell.com/).

This is my first time contributing to `eslint`, not sure that I got all the correct code style.