[NFC] move custom_hilbert common logic to HomogeneousHilbert
Created by: PhilipVinc
This PR is a cherry picked commit from #734 , CustomHilbert to HomogeneousHilbert. Also keep around a CustomHilbert to create custom hilbert spaces, which is a thing wrapper around HomogeneousHilbert. This change is so that user-defined hilbert types can easily signal if they are homogeneous or not.
I detached it from the other PR to keep the history cleaner, and this is already ready to be reviewed.