Cache the results of Timber::get_context() in Timber object (in case it gets called twice)
Reworked template_loader into separate methods 'template_loader' and 'locate_template' and added the public method load_template, that optionally takes additional context.