Introduce d3.Layer
Make Layer API more D3-like

Wrap Layer constructor function to promote better parity with D3.js code
style.
Make Layer API event more D3-like

Layers should be initialized on valid D3 selections.
Introduce d3.chart

A simple framework for defining extensible charts composed of
"d3.layer"s.
Begin re-factoring to favor mixins over inheritance
I have no idea what I'm doing
Fix bugs in chart initialization logic
Remove mixin magic

The previous API was a little too clever; it wouldn't necessarily be
understandable to new developers. It also had technical limitations: it
made it impossible to alter the data passed to mixin constructors, and
it necessarily made assumptions about how mixins should be inserted into
the base chart.
Prototype new approach for mixins

This approach mimics D3.js usage patterns more closely by operating on
selections.

Unfortunately, it restricts mixin names. Not sure how to resolve this.
Implement sane API for mixins
Further simplify mixin declaration

Requiring a `namespace` string in mixin creation clutters the method
signature and limits the user's options on how to attach the mixin chart
(i.e. it can only be attached to the chart instance directly). This API
leaves the method of reference attaching completely up to the user.

Not sure if this is a good idea: the user may not keep references to the
chart, which will be problematic if we later decide to implement more
mixin management methods (like `removeMixin`, for example... ooo! We
could call that `mixout`!)
Actually implement selection-based chart creation

Prior to this commit, chart "bases" needed to be specified as the first
argument. Since the chart constructor has been moved to
`d3.selection.prototype`, this is no longer necessary--the constructor
can (and should) infer its base from the selection it was called on.
Behing the scenes, all charts will expect the base selection as the
first argument to their constructor. The end user does not have to be
aware of this requirement, because the first argument can be omitted in
the invocation of Chart#initialize.

This work necessitated a more d3-like API for mixins. This is a bad
idea and should be re-worked ASAP.
Implement new mixin API

This API is significantly uglier than previously implemented, but it
does not rely on the "magic" of global method switcheroos. Still needs
work, though...