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
Element.absolutize should save existing position style so that relativize restores it.
Fix bug in isSimulatedMouseEnterLeaveEvent. [#1269 state:resolved] (Victor, Andrew Dupont)
Optimize `Form.getElements`. [#1147 state:resolved] (Victor, Andrew Dupont)
Ensure `makeClipping` and `undoClipping` properly restore an "auto" value. [#1063 state:resolved] (Victor, Andrew Dupont)
Fix documentation typo. [#1051 state:resolved]
avoiding infinite loop in String#gsub when there is a zero length match
typos fixed
typo fixed
typos fixed
Update src/prototype/lang.js