Remove: Large try/catch blocks in module

The try/catch statements have been moved to smaller functions
which simply try to return the built-in if it exists. If not they
return false. This allows the module body to exist outside of
multiple try/catches and simply use the default (||) operator
to select the appropriate implementation.

Also in this patch is a modification to the bind function which
better handles the arguments object.

Signed-off-by: Kevin Conway <kevinjacobconway@gmail.com>