Demote stick out factor from a macro to a function argument.
This is mostly done so we don't have to build and store a bunch of extremely minor code variants.
This change also splits is_adjacent_or_overlapping() into is_adjacent_or_overlapping() and is_adjacent_or_overlapping_with_stick_out().