Allow soft dependencies in the namespace with ImportErrors at use
# What does this PR do?

This PR aims at making errors due to soft dependency (like datasets) easier to understand for users. It aims at making everything available in the namespace and raising an import error at `init` or `from_pretained`

<!-- Remove if not applicable -->

Fixes #7536

> FAISS_IMPORT_ERROR here ;)

Good catch ;-)<|||||>(we should have this for TF/PyTorch as well)