Handle js_tostring on objects without toString or toValue methods.

Don't throw a type error, just return "[object]" instead.
Use length property of cfunctions to make sure we have at least N args.

So we don't get temporary stack values that shadow undefined arguments.
Implement ES5 array functions.