This should support fallback. First check Joomla layout for override, next check CB template layouts (new feature) for override, and finally if neither of those exist check the template. If template is null/default we're done, but if it's not default and the file doesn't exist it needs to fallback to default.
My current usage is with classes and functions. While this works it's limited. The above provides significantly more power. Variables need to be accessible so display should probably be able to handle an unlimited variable scenario so the layouts have access to those variables.
Other usages would be as follows.
Application::Layout( 'PLUGIN_ID_OR_ELEMENT', 'TEMPLATE' )->css() Loads template.css and override.css (if exists).. support fallbacks like display.. optionally support 'LAYOUT' to load a layout css file (e.g. tab for tab.css).
Application::Layout( 'PLUGIN_ID_OR_ELEMENT', 'TEMPLATE' )->get( 'ELEMENT' ) Outputs a template framework element (e.g. box.container) and allows elements to be overridden by the template.. needs to pass variables just like ->display
Application::Layout( 'PLUGIN_ID_OR_ELEMENT', 'TEMPLATE' )->media( 'FILE' ) Outputs a template pathed media URL (e.g. logo.jpg would path to the appropriate template location)