Let's do it the optimized way and fallback if natives's aren't working

If we can, use the native methods; else, shim these.

**Changes:**

1. Use ~ instead of > -1.
2. Cache array length lookups. (actually invokes more than just "reading" the length)
3. Implement an alternative way, insanely more fast native way of doing things.
4. I var'd every function because I can't sleep if they aren't.
5. Papa-bear asked me to tell you to merge this, please.

![tumblr_mtz3vomiz21qhy6c9o1_500](https://f.cloud.github.com/assets/280212/1511835/9114bb8c-4aba-11e3-8a67-5f62efacebe5.gif)