use templates now for html, allow custom names

This PR does 2 things:

- uses the new `templates` key for html, jade, etc. templates
- allows you to give custom names for example

```
does this component have html? yes // okay create name template.html
does this component have html? no // do not create anything
does this component have html? template.jade // create template.jade
```

This PR also sets a precedent that we should be requiring templates using:

```js
// good
var template = require('./template.html');

// bad
var template = require('./template');
```

Personally, I think this is must more understandable and allows templates and scripts to share the same name. I think with the introduction of the `templates` key, this is a good change.