Make narrowWideReferences its own pass.
Dereference widenMap at the call site.
Update compilerPerformance.perfkeys with new pass.
Merge branch 'master' into makeNarrowWideRefsItsOwnPass
Merge branch 'makeNarrowWideRefsItsOwnPass' of https://github.com/hildeth/chapel into makeNarrowWideRefsItsOwnPass
Post-review cleanup.

Move the assert the type symbols do not appear in the defMap to the caller and reactivate.
Zero out wideInfoMap and widenMap pointers after they have been deleted.
Merge pull request #354 from hildeth/makeNarrowWideRefsItsOwnPass

Make narrowWideReferences its own pass...

... and factor the main routine.

Making narrowWideReferences() its own pass was straightforward: It included adding the top-level hooks, and removing its invocation from the tail of insertWideReferences(). Since moveAddressSourcesToTemp() used to be called after the call to narrowWideReferences(), I moved that invocation into narrowWideReferences(), and moved the (static) function into narrowWideReferences.cpp.

While there, it seemed natural to factor the main routine for narrowWideReferences(). I merely chunked up the main blocks of code and pulled them out as (filescope) static functions. I was able to reduce the scope and lifetime of widenMap, defMap and useMap by declaring them inside the main routine and then passing references into those helper functions the need to access them. I left wideRefMap as a filescope variable, for convenience, but reduced its lifetime to one invocation of that pass.

This commit should be considered a short-term expedient.  Vass and I discussed, and I have entered a Pivotal story, for factoring logging out of the driver and into a callable interface -- as a better way to support logging at a finer granularity.