Adds support for nested partial names

- Partials will be named according to their base directory, for example
  for a glob pattern of "source/partials/**/*.hbs", a partial defined at
  "source/partials/foo/bar.hbs" would be assigned the name "foo/bar".
- Also fixes throwing errors if options.data, options.helpers or
  options.partials are not defined.