Merge tag 'v0.3.2'

v0.3.2
Rename logname.generate to expander.expand

logname.generate was way to specific to its original use, despite its
highly generic functionality.
Add %a and %h to core string expander

%a is expanded to appName and %h to hostname, assuming those keys exist
on the worker object given to the expander.

Parameters that are not provided should be ignored and not substituted.
Generate useful default scope for statsd metrics

Default is "%a.%h.%w" using the builtin string expander.
 * appName (%a) comes from strong-agent (agent.config.appName)
 * hostname (%h) comes from strong-agent (agnet.config.hostname)
 * workerId (%w) comes from strong-supervisor's clustering support

SLN-1186 #resolves
debug: introduce a debug wrapper

It defines a `.json()` method for creating JSON snippets, and uses the
current package name as in the debug specifier as `PACKAGE:TAG`.
test: use a common debug wrapper
cpu-start/stop: command line CPU profiling
Merge pull request #38 from strongloop/feature/cpu-control

start/stop cpu profiling from slc runctl CLI
logger: only use log transformer in clustered mode

There is no sane way to redirect the stdout/stderr of the current
process in node and that is where apps will log to when not clustered.
Since we cannot process the stdout/stderr of the app to add timestamps
and other tagging, we should disable our own log line prefixing for the
sake of consistency.

SLN-1060 - log cleanup
cluster: use 0 as cluster master's worker id

Make the worker stamping more regular by using worker:0 instead of
worker:supervisor. The clustering support already specifies that 0 is
the predefined "worker" id of the cluster master process and carrying
that into the log output will make it easier to parse and process.

SLN-1060 - log cleanup
Export supervisor's logger in worker processes

Make sure strong-agent gets the supervisor's logger in both worker and
supervisor processes so that log level tagging is done, otherwise the
output is highly inconsistent.

SLN-1060 - log cleanup
Allow master logging in --metrics mode

cluster.worker is null in the master, not empty.

Introduced in 1c92540324e34774209d926e977f40c1488a6790.
runctl: clarify fork response and usage
Merge pull request #48 from strongloop/feature/clarify-fork

runctl: clarify fork response and usage
control: refactor control channel naming
run: fix --no-channel option

It was actually opening a channel called "false".
run: support control and exit via node ipc

All commands available to `slc runctl` over local domain sockets are
made available to a parent node process, if it establishes an ipc
connection to the supervisor (see `child_process.fork()`).

Also, when the ipc connection is disconnected (either explicitly, or
because the parent process exited, the child can't tell the difference),
the supervisor will exit to prevent process leaks.
Merge pull request #49 from strongloop/feature/pmctl

Feature/pmctl
runctl: add heap-snapshot command
runctl: don't attach runctl server in workers

Workers have their node IPC channel attached to the supervisor/cluster
master, and only the targetctl messages are supported on it. Attaching
both runctl and targetctl to the node IPC channel causes every message
to received by both... which goes poorly.