Inconsistency behavior between handling local file protocol and other FS protocols
{'login': 'leoleoasd', 'id': 37735580, 'node_id': 'MDQ6VXNlcjM3NzM1NTgw', 'avatar_url': 'https://avatars.githubusercontent.com/u/37735580?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/leoleoasd', 'html_url': 'https://github.com/leoleoasd', 'followers_url': 'https://api.github.com/users/leoleoasd/followers', 'following_url': 'https://api.github.com/users/leoleoasd/following{/other_user}', 'gists_url': 'https://api.github.com/users/leoleoasd/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/leoleoasd/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/leoleoasd/subscriptions', 'organizations_url': 'https://api.github.com/users/leoleoasd/orgs', 'repos_url': 'https://api.github.com/users/leoleoasd/repos', 'events_url': 'https://api.github.com/users/leoleoasd/events{/privacy}', 'received_events_url': 'https://api.github.com/users/leoleoasd/received_events', 'type': 'User', 'site_admin': False}
[]
[]
### Describe the bug

These lines us used during load_from_disk:
```
if is_remote_filesystem(fs):
    dest_dataset_dict_path = extract_path_from_uri(dataset_dict_path)
else:
    fs = fsspec.filesystem("file")
    dest_dataset_dict_path = dataset_dict_path
```
If a local FS is given, then it will the URL as the path name. If a remote Fs is given, then it will use the path of the URL. This is an inconsistent behavior when handling a file: when using remote FS, you must write a URL, but for local FS, even if you passed LocalFileSystem as `fs` you still can't use a `file://` URL. It will be recognized as a directory named `file:`.

### Steps to reproduce the bug

```
import fsspec.core
url = "hdfs:///somewhere/MNIST"
# url = "file:///somewhere/MNIST"
fs, path = fsspec.core.url_to_fs(url)

fs.ls(path) # this will always work
load_from_disk(path, fs) # only works for local FS
load_from_disk(url, fs) # only works for remote FS

```

### Expected behavior

one of `url` or `path` should always work

I think we extract path from given URL by using `fsspec.core.url_to_fs` instead of using `is_remote_filesystem` and `extract_path_from_uri` will fix this, since:
```
fsspec.core.url_to_fs("/somewhere/MNIST") ->  LocalFs, '/somewhere/MNIST'
fsspec.core.url_to_fs("file:///somewhere/MNIST") ->  LocalFs, '/somewhere/MNIST'
fsspec.core.url_to_fs("hdfs:///somewhere/MNIST") ->  HDFS, '/somewhere/MNIST'
```
and
```
fsspec.core.url_to_fs("file:///somewhere/MNIST") == fsspec.core.url_to_fs("/somewhere/MNIST")
```
In theory, this wouldn't break anything, since giving local path and remote uri still works. It will only affect local URI (make it works too)

### Environment info

- `datasets` version: 2.5.1
- Platform: Linux-5.4.205.1**HIDDEN**
- Python version: 3.7.10
- PyArrow version: 8.0.0
- Pandas version: 1.2.4

{'url': 'https://api.github.com/repos/huggingface/datasets/issues/5172/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}