WIP ENH: Add volume and discrete source space creation support

WIP for two reasons:

1. I haven't added a test for discrete source space creation. Should I add (another) source space to sample dataset, or just create one on the fly in the test (should be quick)?

2. There is a mismatch between the source spaces in the sparse `src['interpolator']` matrices. Not sure if it's due to numerical differences (not likely), but a small percentage of points differ between the solutions. The RMS difference of the points that exist in `(src_c['interpolator'] - src_py['interpolator']).data` is only 3% (0.03), so it doesn't seem so bad. @mluessi or @agramfort WDYT about this?

Other than that, should be good for review.

FYI, I had to steal some code from my forward PR, and while that makes a rebase nightmare for me, it should actually make reviewing easier since the forward PR will end up being smaller.