Add support for default layout

- Users can now specify a default layout and layout path to use.
- The render generator function causes partials and layouts to be
  cached. There is probably a better way to do this, but now
  everything is guaranteed to be loaded when a template is
  rendered.
- Update tests