Move SourceElementsNode test also to nodes/ dir.
Only use NodeTestCase for tests in nodes/ dir.

These other tests inheriting from NodeTestCase were just a result
of copy-paste creation of tests.
Make typeof Function work as expected.

- Make the Function to be an instance of RubyFunction.

- Add 'prototype' and some other properties also to RubyFunction
  instances.
Turn Array, Object and Boolean also into functions.
Eliminate values auto-wrapping from JS::Base.

Previously when assigning values one had to:

    obj["name"] = :undefined

which was then accessed by:

    obj["name"].value  --> :undefined

Now the value wrapper needs to be created explicitly with:

    obj["name"] = VALUE[:undefined]
Turn 'Class' property into internal property.
Turn 'prototype' into internal property.

Disable several tests that expected the existance of 'property'.
Add 'this' parameter to all function calls.

Both JS::Function#call and JS::RubyFunction#call now expect first the
`this` parameter to be passed in and then the *arguments.

When called without context, the 'this' param will have to default to
the global object. Therefore added a Env::Lexical#global_object method
to easily access the global object.

The 'this' keyword now also works as it should.
Default function body to empty syntax node.

Instead of doing checks for the presence of body, ensure the body is
always present.

Eliminate :body and :arguments accessors - these aren't used from the
outside of the Function object itself.
Fix accessing properties in prototype.
Simple test case for JS::Base.
Implement the 'new' operator.

Disable another bunch of tests.  We'll turn them back on later.
Fix property assignment.
Fix execution context test.
Evaluate BracketAccessorNode.
Evaluate basic object literals.
Disable tests for Math, Function, Array, Boolean.
Eliminate Number function, leaving just the object.
Simplify String to simple object.
Implement String#fromCharCode as RubyFunction.