Implement more complete function name inference

The semantics of function objects' "name" property has been formalized
in the ECMAScript 6 specification. Implement the specified behavior with
two differences:

- Report functions whose name is derived from an expression as having
  the name "(expression)" (in these cases, the correct value cannot be
  determined statically).
- Report functions whose name is unset as having the name "(empty)".
  Although the specification dictates these functions be assigned the
  empty string ("") as a name, a more explicit name will be more
  informative to developers inspecting the generated report.