Implement overlap avoidance part of the spec

**Note:** I still need to add some basic processing model tests to verify that this actually works correctly and verify that it works in Gecko. I've put this up just to get some early feedback if possible.