Change AbstractMachine PyBind wrapper to parametric
Created by: PhilipVinc
Even if we will eventually let go of the C++ core, for now it's with us to stay.
Right now we have the following class hierarchy: AbstractMachine<:AbstractDensityMatrix<:Anything
.
The correct way to wrap those in pybind11 would be to create parametric trampoline classes PyAbstractMachine<Machine> <: PyDensityMatrix<Machine> <: Machine
.
This is well documented in the docs.
This PR aims at fixing my previous implementation, wich works but prevents to create Python objects which subclass the correct C++ class.