Simple evaluation of delete operator.
Add back 'Function' function.
Make Function prototype work as it should.
Transform GlobalObject tests into JS::Base tests.

Those tests in there really were more of a tests of JS::Base than
of JS::GlobalObject.
Merge RubyFunction into Function.

Disable one test for now, as implementing it at the moment results in
infinite recursion.
Let all functions reference the environment.

So, they can access the builtin Object.prototype from the Env::Lexical
object instead instantiating it by themself, and therefore they can all
point to the same shared Object.prototype.

For this to work, the properties of a global object are created
in a separate method, so we can first construct the global environment,
and then pass it to the #init_in_environment, which creates Function
objects.

As another major change, the environment is the first argument of
Function now, and also a required one.
Rename @outer_environment to @env in Function.

Simpler and shorter.
Implement property attributes.

Rewrite the old JS::Property class from previous implementation, and use
it to represent all object properties.  All the old JS::Base methods
continue to work as before, with the addition that :writable and
:configurable attributes are taken into account in #delete and #[]=
Move Function object initialization to JS::Function.
Move global Object initialization to JS::Object.

Also define all GlobalObject dependencies inside its file, not in js.rb
file.
Eliminate rkelly/js.rb file.

Instead depend on 'rkelly/js/global_object' when all js-stuff is
needed, or better, require the exact classes you depend on.
Specify dependencies of all JS::* classes.
Unify references to RKelly::* classes.

- Drop the 'RKelly::' in front of all class names.
- Add 'JS::' in front of all RKelly::JS::* class names.