Frontend: create ProfileHeatmapProvider, and add some stub event
emitters to create a new provider whenever a profile is added.

Add heatmap mode selector to ScriptsPanel, which enumerates and
changes heatmap visualization modes between calls, self, and total
time.

Add listeners and logic to ask heatmap provider to add/remove
highlights to text editors at appropriate times.
Change ProfileHeatmapProvider highlight API to use SourceFrames. Add predicate to only process JavaScriptSourceFrames.
Frontend: move profile data loading from CPUPRofileView to
CPUProfileHeader. This allows other clients of profile data to kick
off loading.
Frontend: expose a TextEditor's text model, and use it for a stub implementation of JavaScriptSourceFrame.highlightFunctionAtLine().
Frontend: Initial code for highlighting functions mentioned in profile
nodes. Does not attempt to use different style classes based on
frequency/histogram.

Closes #177.
Frontend: add method to ProfileHeatmapProvider that exports aggregated profile data as CSV.
Frontend: extract ProfileHeader and ProfileType from ProfilesPanel.js
to their own files.
Frontend: don't create a ProfilesHeatmapProvider if the profile header
is temporary. Requesting data for a 2nd temporary profile causes an
assert in the backend ProfilerAgent.
Frontend: clean up how profiles receive default names/titles. Expose
ProfileHeader.displayName() which returns a default generated profile
name, or stores a custom display name for the profile.

Closes #191.