cleanup whitespace
Add helper method/module support to template resource

Adds helper methods to a template via the following syntax:

```
template "name" do
  # singular method definition:
  helper(:method_name) { method_body }

  # inline module definition
  helpers do
    def method_name
      method_body
    end
  end

  # external module inclusion
  helpers(MyHelperModule)
end
```

In each of the above cases, variables defined by Chef (e.g., `@node`)
or the user (via `:variables => {}`) can be accessed as normal.

Could use the following improvements:
- Template partials are not supported
- Input validation on Resource::Template should be improved
- Needs Unit tests for Template provider/implementation classes
fix whitespace and ruby warnings
Pass template extensions through to partials

- move the new TemplateContext code into mixin/template and consolidate
  with ChefContext
- Copy extension modules from parent template to partial template.
- Functional tests for helpers with partials.
Move helper module compilation inside template resource

- Resource::Template compiles helper methods/module bodies into a
  collection of modules for inclusion into the template context.
- Resource::Template checks for obvious invalid input to helper
  definition methods.
Add inline doc for TemplateContext