Simplify Finding Default Layout

# Summary

This PR simlifies the logic for finding default layouts in controllers when rendering.

Note: The code here is still changing, this PR was opened to have a discussion forum and to check general acceptance of this refactoring. All tests pass on my system :grimacing: 

# Implementation

While the former implementation was really hard to read and understand, the new `DefaultLayout` class cleanly provides encapsulation, and, more important, removes dozens of line of string evals, `super` calls where it was hard to know what `super` is and removes the need to hook into `inherited`.

Instead, it implements a recursion that travels up the controller inheritance chain to figure out the default layout.

Bottom line: No dynamic method defintions, no string eval, no `inherited`, and 47% less code.
Haha, I totally know what you mean and I find it a good thing you take care of that stuff :smirk: 

It might be a bit off-topic or too much of a principal discussion, but I suppose Rails should be more aggressive about removing and deprecation old shit. In the past 5 years I've seen so many relicts that are so old I doubt anyone uses it. And if, that's their problem when it's documented correctly (see http://tenderlovemaking.com/2014/06/04/yagni-methods-slow-us-down.html as an example).

Rails blocks itself from innovation (especially in the view and controller layer) by providing too many configuration directives and magic that only a handful of people use (there's about 10 ways to determine a controller layout, no one needs that). A good, clean set of defaults would be sufficient but since the policy is "stay 100% backwards-compatible" all the old code will survive and block people from redesigning it.

It's a good thing that you guys keep trying to provide compatibility, sometimes I am too ruthless in my gems with my "deprecations" :grin: but I think a good middle ground will help Rails to move faster.