P2P: Add support for exclude_self in the FMM.
This changes the P2P stage to be aware of self interactions in the FMM and to exclude them, if desired. Self interactions are specified by passing an extra array called source_to_target which matches source numbers to target numbers.