Rename Js::Function to Js::Returns.

This class really only deals with detecting the return type - so
the old name was not precise enough.
Split up long detection method in Js::Ast class.

Significantly improve readability.
Extract Js::Method class from Js::Ast.

Do all the method-data detection inside it.
Simplify Js::Method class.

Do the proper_function? detection just once.
Move all method-detection stuff to Js::Method.
Move all event detection to Js::Event.
Move all property auto-detection to Js::Property.
Move class auto-detection to Js::Class.
Eliminate bunch of pass-through methods in Js::Ast.
Minimize the number of params passed to #detect methods.

Calculate exp and var locally as needed.