Issue title: @pipeline throws `LoadError`/`UndefVarError` in Pluto notebook
 Issue body: I used the `@pipeline` macro as follows in a Pluto notebook:

```
begin
    using MLJ
    using CategoricalArrays
    using MLJLinearModels
end

pipe = @pipeline ContinuousEncoder Standardizer
```

Executing the `@pipeline` macro throws the following error:
```
pipe =
LoadError: UndefVarError: MLJModelInterface.UnsupervisedComposite not defined
in expression starting at  ...

1. top-level martinkyle@example.net:611
2. martinkyle@example.net:360[inlined]
3. eval(38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5xpr)@PlutoRunner.jl:71
4. from_network_(38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Module, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Symbol, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Symbol, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5xpr, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5ool, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5ict{Symbol, Any})@from_network.jl:138
5. pipeline_(38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Module, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Symbol, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Vararg{Symbol, N} where N)@pipelines.jl:460
6. var"@pipeline"(38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5LineNumberNode, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Module, 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Vararg{Any, N} where N)@pipelines.jl:541
```
The same code runs without errors using the Julia REPL. So what's wrong in this context?

My environment is: Julia 1.6.1, macOS Monterey


 Comments: 
 Comment 0: Consider sharing your Pluto version as well so that MLJ maintainers can help you. It is only recently that Pluto added full support for Julia macros. Alternatively, if you are only using pipelines for cleaning data, and don't want to optimize hyperparameters, consider this recent macro-free package: https://github.com/JuliaML/TableTransforms.jl
 Comment 1: Also, if I recall correctly, @ablaom is working on a interface for doing pipelines in MLJ without macros. Perhaps you could wait until that feature is available?
 Comment 2: It would be wonderful to see macro-free pipelines in MLJ. Let me know if you want to integrate this ongoing effort in TableTransforms.jl @ablaom , I would be happy to help. We settled on a simple interface for revertible transforms and could add a couple of functions to this interface  to access internal fields for hyperparameter tuning. If I understand correctly the usage of macros was basically to get access to internal field values?
 Comment 3: I'm using Pluto 0.17.1 (the most current version).

One really strange thing is the following observation: I've converted the MLJ tutorial from JuliaCon 2020 (https://github.com/ablaom/MachineLearningInJulia2020/blob/master/tutorials.md#part-3-transformers-and-pipelines) to a Pluto notebook (with adaptions for the current MLJ version). This tutorial contains quite a few `@pipeline` macros and it runs without any problems. But the little code snippet, which I posted above (just two cells in the Pluto notebook) don't work.
 Comment 4: > It would be wonderful to see macro-free pipelines in MLJ. Let me know if you want to integrate this ongoing effort in TableTransforms.jl @ablaom , I would be happy to help. We settled on a simple interface for revertible transforms and could add a couple of functions to this interface to access internal fields for hyperparameter tuning. If I understand correctly the usage of macros was basically to get access to internal field values?

See https://github.com/JuliaAI/MLJBase.jl/pull/639 or https://github.com/JuliaAI/MLJBase.jl/pull/664
 Comment 5: I've tried the code now in different environments:
- Julia 1.6.1, Pluto 0.17.1, MLJ 0.16.11, macOS Monterey
- Julia 1.7.0-rc2, Pluto 0.17.1, MLJ 0.16.11, macOS Monterey
- Julia 1.6.0, Pluto 0.17.1, MLJ 0.16.5, Windows 10 

The error occurs in all three settings .

Note: In the Windows environment `add MLJ` loads only vers. 0.16.5 as the most current version.
 Comment 6: @roland-KA Thanks for reporting.

It's quite possible that `@pipeline` won't work in a pluto notebook. The issue reminds me of one that I have encountered when I try to generate a pre-executed jupyter notebook using Literate - Literate cannot execute but I can execute the notebook (with a `@pipeline`) just fine manually. 

I'm confident the [new macro-free pipeline](https://github.com/JuliaAI/MLJBase.jl/pull/639) will not have this issue. Although it is finished it involves a breaking change and so is not live yet. You can try it out by using the "for-0-point-19-release" branch of MLJBase:

```julia
using Pkg
Pkg.add(name="MLJBase", rev="for-0-point-19-release")
```

Please let me know if you do try it out and it works. 

 Comment 7: @ablaom thank you very much, this works without problems!

Do you have any idea, why the error occurred with this small example, whereas the complete MLJ tutorial (parts 1-4) that you published in 2020 and which I've transferred recently to Pluto, works perfectly?
 Comment 8: > MLJ tutorial (parts 1-4) that you published in 2020 and which I've transferred recently to Pluto, works perfectly?

They do?!

Sorry, I really don't know and, to be honest, am not incentivised to investigate after going to all the trouble to fix `@pipeline` 😄 . Basically the problem with `@pipeline` is that it has `eval` in it (which I now understand is terrible)  and is therefore fussy about the scope from which it is called. For example, you can't call it from inside a function. 
 Comment 9: BTW, you may want to look [here](https://github.com/ablaom/MLJTutorial.jl) where I have been working on porting the tutorials to individual ones. I generate Pluto notebooks there (I'm using the unreleased Literate.jl branch to do this) but then there is all the fussing about unique variable names, and I kind of gave up for the moment (mostly because I'm not a pluto fan.)  I think the other formats are all fine. Maybe you want to help out?


 Comment 10: @roland-KA Be great if you could confirm that this issue is resolved by https://github.com/JuliaRegistries/General/pull/49134 . See also https://github.com/JuliaAI/MLJBase.jl/pull/685.
 Comment 11: The hint on how to circumvent the problem in ([fonsp/Pluto.jl#1658](https://github.com/fonsp/Pluto.jl/issues/1658)) by @Pangoraw solves the problem in my notebooks (for the `@pipeline` macro as well as for `@from_network`). 

Apart from that, the use of `@pipeline` can now be avoided altogether with the introduction of the new `Pipeline` type in MLJ.
 Comment 12: > Apart from that, the use of @pipeline can now be avoided altogether with the introduction of the new Pipeline type in MLJ.

Yes, when MLJBase 0.19 is released.
{'source': 'GithubIssues', 'repo_name_with_owner': 'alan-turing-institute/MLJ.jl', 'issue_id': 1050082290, 'repo_stars': 1548.0}