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 .
Honor `transform` option at initialization time

Ensure when charts are instantiated with a `transform` function, that
function is properly attached to the chart instance. For example, the
chart instance produced by the following code should contain the
specified `transform` method:

    d3.chart("MyChart", {
      transform: function(d) { return d.attr; }
    });
Release v0.2

Increment version, rebuild distribution files, and update examples.