[NFC] Make a more explicit SR and Matrix type hierarchy + add SRJacobian (#648)
Created by: PhilipVinc
This PR makes no change to our public API or functional changes within netket. It simply creates a class hierarchy for SMatrix types as follows:
AbstractSMatrix < -- AbstractLazySMatrix <-- OnTheFlySMatrix <--IterativeSMatrix
My idea is that #648 can be rebased on top of this one, and it's Matrix type can be a subclass of AbstractLazySMatrix
.
This will be handy also for discussions in #649 (closed).
The PR also clearly defines what is the api that those objects should define to conform to NetKet.