Re-apply commit e307468.

The V8 assert got triggered by a missing HandleScope::Close().
Merge branch 'v0.8.1-release' into v0.8
Blog post about 0.8.1
doc: fs.lchmod() is only available on OS X
deps: upgrade libuv to 3b8c0da
build: rename openssl configure switches

For consistency's sake, rename:

  --openssl-use-sys
  --openssl-includes
  --openssl-libpath

To:

  --shared-openssl
  --shared-openssl-includes
  --shared-openssl-libpath

And add --shared-openssl-libname while we're at it.

The old switches still work but `./configure --help` won't print them.

Fixes #3591.
build: handle output of localized gcc or clang

Before this commit, we used to scan the output of `$CC -v` for strings like
"gcc version x.y.z".

It was pointed out that this approach fails with localized versions of gcc
because those print (for example) "gcc versión x.y.z".

Use the output of `$CC --version` instead and only look at the first line.
doc: document setTimeout / setInterval behavior
deps: upgrade libuv to cc1b3de
build: detect cc version with -dumpversion

The heuristic introduced in f78ce08 ("build: handle output of localized gcc or
clang") does not handle "branded" versions of gcc, i.e. a gcc whose output has
been customized by the distro vendor.

Fixes #3601.
build: disable -fstrict-aliasing for any gcc < 4.6.0

It has been conclusively demonstrated that the -fstrict-aliasing bugs in gcc's
optimizer are not limited to the 4.5.x releases only.

Fixes #3601 among others.
build: rename strict_aliasing to node_no_strict_aliasing

Make the variable naming consistent with the other strict aliasing var,
v8_no_strict_aliasing.
deps: upgrade libuv to 5031a5b
tools: update gyp to r1426
Merge remote-tracking branch 'origin/v0.8'

Conflicts:
	configure
	src/node_version.h
punycode: update to v1.1.1
deps: upgrade libuv to be09be7
repl: fix crashes when buffering command

Wrong order of operands was causing problems while trying to use command
buffering:

    > {
    ...   a: 3,
    ...

    repl.js:284
            if (cmd.trim().match(/^npm /) && !self.bufferedCommand) {
                    ^
    TypeError: Cannot call method 'trim' of undefined
        at finish (repl.js:284:17)
        at REPLServer.self.eval (repl.js:118:5)
        at rli.on.e (repl.js:260:20)
        at REPLServer.self.eval (repl.js:118:5)
        at Interface.<anonymous> (repl.js:250:12)
        at Interface.EventEmitter.emit (events.js:88:17)
        at Interface._onLine (readline.js:183:10)
        at Interface._line (readline.js:502:8)
        at Interface._ttyWrite (readline.js:720:14)
        at ReadStream.<anonymous> (readline.js:105:12)

Test included.

Closes #3515.
Closes #3517.
Closes #3621.
repl: fix passing an empty line inserting "undefined" into the buffer

There was a possiblity of insering the string "undefined" into the repl's
command buffer, which would cause interesting results while evaluating.
readline: Use one history item for reentered line

If the command entered is exactly the same as the last history item,
don't dupe it in the history