Fix typeof evaluation for regex and function

Currently `typeof /./` evaluates to specific string (on node it evaluates to "object"). This is incorrect since RegExp can be either "object" or "function" depending on whether or not it implements [[Call]]. This in particular breaks underscore's _.isFunction() on the platforms where RegExp is a function: https://github.com/documentcloud/underscore/blob/master/underscore.js#L992

Also, `typeof function(){}` currently evaluate to "object", which is obviously incorrect.

This PR fixes both issues.