Some native functions report typeof "object" in some browsers.
Use the ES5 Array.isArray if available.
Adding some more isEmpty tests.
Make isHash a bit more robust.
Making Object.prototype.toString lookups faster.