Make widget layout easier to modify

At the moment, all of the widget's elements are created with javascript. This makes it difficult to change or extend the layout of the widgets (which is what needs to be done for NDOH).

The plan is to require the html for widgets to tell sapphire where to draw what parts of the widget:

```html
<div id="some-widget">
  <div data-widget-component="title"></div>
  <div data-widget-component="chart"></div>
  <div data-widget-component="legend"></div>
</div>
```

```javascript
d3.select('#some-widget')
  .datum({...})
  .call(sapphire.widgets.lines());
```