Changing the way theme details classes are spawned

Instead of checking where the theme details file is again to spawn the class, this passes the location of the theme into the _spawn_class method. This also allows themes that aren't in the default locations to be spawned (i.e. If a theme path has been added using ```$this->template->add_theme_location()```