Bug 901351 - Properly handle various edge cases in JSON.parse when walking/reviving the initial object tree. r=jorendorff, a=lsblakk