Minor refactoring in Function/PropertyCodegen

Check if we need to generate code before calling generateMethod()
There were 4 such checks, 2 of them in PropertyCodegen, one in
FunctionCodegen.gen() and one in ClosureCodegen. Every usage except the last
was prepended with the check
Minor refactoring in FunctionCodegen

Combine two nested classes, MethodBounds and LocalVariablesInfo, into one
MethodInfo. Rename some methods. No logic has changed
Simplify FrameMap construction in FunctionCodegen
Extract generation logic from FunctionCodegen

Create a new class FunctionGenerationStrategy, which is used to specify exactly
how the body of a function will be generated. This is made primarily to factor
out the hard dependency on PSI in FunctionCodegen.generateMethod(). The PSI
element is now optional and is only used for debug information (as an argument
to newMethod() and endVisit()). This also helps to refactor the confusing logic
about generating default property accessors