Make the Array#concat replacement for the broken native Array#concat implementation in Opera ES5 compliant.

This fixes the issues described in #972 and #843.

Also added more tests for Array#concat.
Make Array#map, Array#some, Array#every and Array#filter implementations (almost) ES5 compliant and use native versions when possible, yielding huge performance improvements.

Prototype's implementations of these methods and the ES5 spec differ in the way a missing iterator function is handled:
Prototype uses Prototype.K as a default iterator, while ES5 specifies that a TypeError has to be thrown. Implementing the ES5 spec completely would break backward compatibility of Prototype and would force users to pass Prototype.K manually.

To keep backward compatibility when using browser native methods for Array#every and so on, these methods get wrapped. Some early performance benchmarks show that this wrapping has almost no performance impact.

This change should also fix #765, as the fallback implementations for the ES5 methods all can be called in a generic way.
Don't wrap the native Array.prototype.filter, as it requires an iterator anyway. Make Array#filter raise an TypeError when no iterator is given (ES5 compliant).
Also use native Array#filter for Array#select.
Add a missing semicolon.
Make all Enumerable methods also pass the collection to the iterator function.

This makes Enumerable methods work like all the iteration methods described in the ES5 spec.
Make all #_each Methods match behavior of Array#forEach according to the ES5 spec (see #554).

This change breaks backwards compatibility, as User defined classes will have to update their #_each implementations, but improves performance of all enumeration methods and thus is propably worth it.
Also update Element.ClassNames#_each (even tho it's deprecated and will be removed some time).
Use native Array.prototype.reduce for Array#inject, if it's available.
Merge remote branch 'upstream/master' into ecma5
First pass on MASSIVE rewrite of dom.js. Some methods are missing, due to be moved to layout.js; therefore some tests fail.
Second pass on rewrite. All tests pass in Safari. Lots of failures still in IE.
Add private convenience method for purging an element array or NodeList all at once.
Various fixes.
Massive rewrite of event observation. Create responders from a separate closure free of DOM objects, thereby preventing memory leaks and removing the need to unregister event listeners before unloading the page.
Add some messages to test assertions in dom_test.js.
Element.absolutize should save existing position style so that relativize restores it.
Documentation fixes.
Merge branch 'dom-rewrite'
Fix erroneous early return.