func split(p string) (string, string) {
	return clean(path.Dir(p)), base(p)
}
func split(p string) (string, string) {
	return clean(path.Dir(p)), base(p)
}
// split is like path.Split, but uses this library's defaults for canonical
// paths