Set layout before each recomputed action

This PR resets the layout before running each action, ensuring that any layouts used for redirects in `onBeforeAction` hooks, etc. are not used in the default action, as discussed with @cmather in #600.

I've updated the tests and updated my app as well.

One quirk of this code is that the `_defaultLayout` has to be set if there is no layout set on the route; otherwise arbitrary layouts from other routes may be rendered. There could be a cleaner way to do this - I'm not sure how to add a test for it.