Add untested, undocumented (mostly) app router mixin

This reverts commits f9c3495, 55a6c72 and 05fadbc.