Switch headers to come from an interface implementation.

This makes it much more easy to provide dynamic headers. Rather than dealing with a Provider, you can now have a concrete class implement this interface.

Closes #146.
Merge pull request #147 from square/jw/footers

Switch headers to come from an interface implementation.