explicit caching in resolve

Also resolve now a method again
add test for correct caching behavior

In particular we assert that we can change behavior after the cache
has been populated
add benchmark
add conflict.py, supercedes function
add remove_obsolete function
add super signature function
add consistent
add ambiguous function
add ambiguities
add ordering function
test_ambiguities no longer sensitive to order
remove remove_obsolete

This should not have existed