Improve source organization

Prior to this work, `chart.js` and `layer.js` were truly independent scripts. They had their own IIFEs and everything. With the addition of the `assert` utility method, I implemented a `d3Chart` global namespace just to share code between them. This seemed really heavy-handed and weird, so I bit the bullet and truly distributed the code across multiple files. I like having the API-related code in separate files--I think this will make it easier for people to reason about how d3.chart is built and used.

The files are wrapped in an IIFE at build time. I don't want to introduce a build step in order to test, so this means that "private" state is exposed in the test environment. This is honestly not as bad as I first thought, though, because we maintain separate JSHint directives for source and test files. This means that we don't have to worry about future unit tests accidentally depending on private state.

While I was at it, I added sourcemap support :)

@iros I believe you're traveling this weekend--will you have any time to review?