metrics visualization initial module implementation

- establish metrics module

This PR is primarily for the initial implementation of the metrics arc module but also contains some enhancements for the PID selector which is shared by the profiler.

the PID selector changes are mostly arround remembering references to previous pm servers for convenience

Fixes #578 
Fixes #594 
Fixes #479 
Fixes #482 
Fixes #502

/to @bajtos @anthonyettinger 
Cleanup opportunity: extract the repeated code to a shared method.

Example:

```js
updateMetricValueFromTick(mStub, 'heap', 'used', processedMetric);

function updateMetricValueFromTick(stub, sectionName, key, processedMetric) {
  stub[sectionName + 'Metrics'][key] = ensureThrottledMetric(stub[sectionName + 'Metrics'][key],
   { x: new Date(newData.timeStamp), y: processedMetric[sectionName][key] });
}
```