Why is `typeof null === 'object'` in JavaScript? The 30-year story of a bug we can't fix