Improve docs/clean up negative overlap functions Clean up some functions in ways that should not affect behavior, change some names to be clearer (`negative_impl` and `implicit_negative` are not really clear imo), and add some documentation examples. r? `@spastorino`