Add default detection for IE 9 and IE 10

How it's done:

On IE10, which should come first before the IE 9 check, the nodeName
function always returns the name in uppercase.

One IE9, the "Object doesn't support property or method" error always
repeats the name of the invalid method.
Make IE10 detection safer for older IEs
Update IE8/IE7 object detection
This is probably the right way to do it for ie7/8
Undo the IE8/IE7 objection detection
Merge branch 'landing-3150' into upstream-master