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
remove "TODO"s that we don't plan to address soon
Explictly test template helpers with arguments
Document template helper definition inline.