Fix paths, handle errors properly

The `relativePath`s of template files in subdirectories was broken (`file.base` was wrong--maybe this is a bug in Vinyl?); this fixes them by using `path.dirname` to get the base.

I've also taken out the `try`/`catch` blocks and am handing async errors off to the callback.