Implement proper lexical scoping.

Discard Scope and ScopeChain, replacing them with LexicalEnvironment,
which in turn uses Declarative- and Object-EnvironmentRecords (like
described in ECMA spec).

Each JS::Function gets a pointer to an environment at its creation time,
and when the function is called, that environment (where the function
was defined) will be extended, not the environment where it was called
(like it was implemented before this commit).
Move all environment classes to env/ subdir.

Environment classes now have shorter names and the structure of the
codebase should be more self-explanatory.

Also shorten the names fo Env::Lexical factory methods. So no we have:

  Env::Lexical.new_global

instead of the old long:

  JS::LexicalEnvironment.new_global_environment
Make Ruby functions interoperate with JS functions.

Functions defined now through Runtime#define_function are now created
as instances of JS::RubyFunction and are callable through
Runtime#call_function.

Both JS::Function and JS::RubyFunction now implement the same interface
for calling - the #call method.
Implement typeof for function values.