Honor inherited implementations of Chart#transform

Chart#extend and Chart#mixin are intended to help authors create new
chart definitions from existing constructors. These new definitions may
define their own data transformation logic, but they likely expect the
previously-defined transformations to take place as well (which is why
they have chosen to reuse the "base" chart).
Limit Chart options to a single parameter

Supporting a variable number of chart options needlessly complicates the
internals of d3.chart.
Simplify `Chart#mixin`

In an effort to honor the single responsibility principle, modify
`Chart#mixin` to operate with previously-created Chart instances.
Additionally, require a unique string name for each mixin.
Implement `Chart#demux`

Provide mixin users with a means to split the input data across mixins.
Improve in-line documentation
Rename `Chart#mixin` to `Chart#attach`

The name "mixin" incorrectly implies state sharing, which this API has
been designed to avoid. The name "attachment" more clearly communicates
the intended use: to associate the `draw` function of one chart which
contains another.
Add assertion for lifecycle event names

Because Layers emit a pre-defined set of event names, d3.chart can help
developers prevent mistakes by asserting the name passed to `Layer#on`
and `Layer#off` is part of that set.
Supress "empty" lifecycle events

If a lifecycle selection contains zero elements, do not trigger the
associated lifecycle event handlers.
added jsdoc block to layer-extensions.js d3.selection.prototype.layer
moving Chart.prototype.initialize definition closer to  since it's more immediatly relevant than .
Release v0.2

Increment version, rebuild distribution files, and update examples.