Repository: pykeen/pykeen
Issue: Merge pykeen.nn.functional and pykeen.nn.modules
GitHub labels: enhancement

### Problem Statement

By having the interaction module and the implementation of the interaction function split across two files, the code becomes less readable. It also spreads documentation across the two files.

Historically, we opted for splitting them because

- *PyTorch does so, too.* -- I suppose that one reason for that is that the methods inside [`torch.nn.functional`](https://pytorch.org/docs/stable/nn.functional.html) have a direct mapping to C++/ATen methods. For us, this is not the case, since we do not make use of any custom kernels.
- *Making it possible to use interaction functions without requiring to instantiate the module.* -- This equally would work with a static method of the class, while still allowing to colocate functionality.
- *Making it easier to test the functions.* -- In testing, we actually use the interaction *modules* since they also store information about how the inputs to the function look like, and how to prepare the state.

### Describe the solution you'd like

- Inlining all functional forms of interactions as static methods of the respective classes.
- merging all existing documentation

### Describe alternatives you've considered

Keeping the status-quo. One benefit would be that this avoid a somewhat large diff, and maintains backwards compatibility in case someone has been using the functional form. I do not think the latter is a large problem, since without the preparation code from the interaction modules, the functional form is not that easy to use.

### Additional information

#### Overview

* [x] https://github.com/pykeen/pykeen/pull/1472 - QuatE
* [x] https://github.com/pykeen/pykeen/pull/1468 - RESCAL
* [x] https://github.com/pykeen/pykeen/pull/1469- TuckER / Multilinear TuckER
* [x] https://github.com/pykeen/pykeen/pull/1470/ - SimplE
* [x] https://github.com/pykeen/pykeen/pull/1471 - Transformer
* [x] #1112 - AutoSF
* [x] https://github.com/pykeen/pykeen/pull/1180 - BoxE
* [x] https://github.com/pykeen/pykeen/pull/1446 - CP
* [x] #1103 - ComplEx
* [x] https://github.com/pykeen/pykeen/pull/1443 - ConvE
* [x] https://github.com/pykeen/pykeen/pull/1444 - ConvKB
* [x] https://github.com/pykeen/pykeen/pull/1447 - CrossE
* [x] https://github.com/pykeen/pykeen/pull/1445 - DistMA
* [x] https://github.com/pykeen/pykeen/pull/1448 - DistMult
* [x] https://github.com/pykeen/pykeen/pull/1449 - ERMLP
* [x] https://github.com/pykeen/pykeen/pull/1450 - ERMLPE
* [x] https://github.com/pykeen/pykeen/pull/1451 - HolE
* [x] https://github.com/pykeen/pykeen/pull/1452 - KG2E
* [x] https://github.com/pykeen/pykeen/pull/1456 - LineaRE
* [x] https://github.com/pykeen/pykeen/pull/1456 - MuRE
* [x] https://github.com/pykeen/pykeen/pull/1463 - NTN
* [x] https://github.com/pykeen/pykeen/pull/1456 - PairRE
* [x] https://github.com/pykeen/pykeen/pull/1464 - ProjE
* [x] https://github.com/pykeen/pykeen/pull/1288 - RotatE
* [x] https://github.com/pykeen/pykeen/pull/1456 - SE
* [x] https://github.com/pykeen/pykeen/pull/1456 - TorusE
* [x] https://github.com/pykeen/pykeen/pull/1456 - TransD
* [x] https://github.com/pykeen/pykeen/pull/1456 - TransE
* [x] https://github.com/pykeen/pykeen/pull/1462 - TransF
* [x] https://github.com/pykeen/pykeen/pull/1456 - TransH
* [x] https://github.com/pykeen/pykeen/pull/1456 - TransR
* [x] https://github.com/pykeen/pykeen/pull/1456 - UM

### Issue Template Checks

- [X] This is not a bug report (use a different issue template if it is)
- [X] This is not a question (use the [discussions](https://github.com/pykeen/pykeen/discussions/new) forum instead)

woohoo! as of #1456, there are only a few left! Nice work max

After merging all modules, it makes sense to do some clean-up of utils (`pykeen.utils` vs. `pykeen.nn.utils` vs. `pykeen.nn.functional` vs. `pykeen.nn.compute_kernel`), and maybe also to split `pykeen.nn.modules` into smaller files.