Rule: no-inner-declarations (fixes #587)

Adds a new rule, `no-inner-declarations`, that enforces placing
function declarations and, optionally, variable declarations at the
root level of the program body or a function body. By default,
misplaced function declarations result in an error, and variable
declarations are not checked.