Update template engine to know of templates in folders.

Template name is no longer basename - extension, it's path relative to view directory + basename - extension

This means that you can autoload views from within directories with the same name as ones in other directories without collisions.

e.g.

/test/index
and
/index

no longer clash
Can we swap out the `==` for a `===`? No point doing any type conversion here as we know the return value is an integer.