Fixed method override and implement issues that were preventing the
correct method in a primitive type from being chosen for interface
implementation.

This bug was, among other things, preventing LinkedList methods like
remove() from working for LinkedLists of primitive types, since the
wrong equal() method was being used for the CanEqual interface.