Based on Sam's and Thomas's recent discovery that, in Safari >= 2.0, document.createElement('div').__proto__ === document.createElement('form').__proto__ (i.e., all elements descend from the same prototype).
This patch checks for such behavior; if it's found, Element.extend handles these specific element extensions.
Element.addMethods has been refactored to optionally accept two arguments instead of one:
Element.addMethods("DIV", { foo: function(element) { alert("bar"); } });
Element.addMethods($w("LI DIV"), { bar: function(element) { alert("thud"); } });
The first argument can be a tag name or an array of tag names. If only one argument is passed, the methods are applied to all elements.