overhaul EscapeAnalysis.jl (local analysis only)
- switched to the working set & flow-sensitive algorithm
- implemented the new alias analysis design
- added more tests
- recovered inter-procedural propagation of escape information
- made EA able to handle `new_nodes`
- add explicit `nstmts::Int` field to `BlockEscapeState`
- detect top escape with `TopLiveness`
- define `AnalyzableIRElement` type alias
- manage `aliasset` globally instead of on a per-block basis:
While `aliasset` is necessary for propagating escape information, the
convergence of the analysis is determined by the convergence of escape
information, so the convergence of `aliasset` is not strictly required.
- rename `escape_xxx` to `analyze_xxx`
- propagate current state to handler state correctly
Even if there are no changes made on current statement.
- `analyze_invoke`: propagate the return value escape information
- use generator for aliasset instead of collecting into array