Restore from W&B artifact
**Is your feature request related to a problem? Please describe.**

I was wondering if it's possible to add first class support for W&B artifacts to the `modelPT.restore_from()` method?
Currently, I run something like the following if I want to download a NeMo model saved on W&B:

```py
from urllib.parse import urlparse

model_path = "wandb://{TEAM}/{PROJECT}/{MODEL_NAME}:{LABEL}"
url_path = urlparse(model_path)
if url_path.scheme == "wandb":
    artifact_name = f"{url_path.netloc}{url_path.path}"
    model_path = download_model_from_wandb(artifact_name, "EncDecCTCModel")
```

and `download_model_from_wandb` would look something like

```py
from pathlib import Path
import wandb
from nemo.utils import logging, model_utils

ARTIFACT_DIR = "/tmp"

def download_model_from_wandb(artifact_name: str, model_class: str) -> Path:
    api = wandb.Api()
    artifact = api.artifact(artifact_name)
    model_name = artifact.name.split(":")[0]  # Remove the tag/label
    model_name = Path(model_name).stem
    root = ARTIFACT_DIR / model_name
    nemo_path = root / f"{model_name}.nemo"
    artifact.download(root=root)
    return nemo_path
```

Maybe we could use some logic similar to the above with `restore_from()` to load the downloaded model?

**Describe the solution you'd like**

I would think that this could live in the [`restore_from()`](https://github.com/NVIDIA/NeMo/blob/main/nemo/core/classes/modelPT.py#L258) method itself, but it seems there's a new [`SaveRestoreConnector`](https://github.com/NVIDIA/NeMo/blob/main/nemo/core/connectors/save_restore_connector.py) so not sure if it's more logical to put something like this there.

**Additional context**

Can open a PR for this if it is welcome.