List_dir: Handler::set_path already handles this
Tab: use the standard way of getting the last vector member
Tab: changed the way of creating columns

Tab will now create columns with a user-supplied list_dir_closure
instead of using the default one.

Added a static function generate_parent_paths which stores the generated
parent paths in a separate vector and applies them in reverse order,
rather than creating the columns themselves in reverse order which
could cause problems when using a custom list_dir_closure.