Simplify _prefixes

# Summary

This simplifies the logic to compile the `_prefixes` array used for view inheritance. The change allows overriding `::_local_prefixes` which didn't work before.

# Implementation

It is now implemented with a proper recursion travelling up the inheritance chain instead of doing all the work locally in the concrete controller. Controllers in the chain can now define their local `_prefixes` by overriding `_local_prefixes` (we can rename that). This didn't work before.

We use this extensively in Cells for the new Trailblazer file layout. I thought it might be help to push that back to the core.