Modules: adding load linked modules feature

This PR is mainly to get some guidance if I'm on the right track (i.e. what @tjfontaine had in mind).
It enables to include C++ modules simply by adding them to the `node.gyp` file and loading them from JS via `process.linkedBinding`.

It is based on `v0.12`, but I can rebase on `master` if that is better.
Please lmk what else needs to be done to get this completed, i.e do we need tests (a little hard to do since it needs to rebuild node to run) and/or an example of how this is used?

- introduced NM_F_LINKED flag to identify linked modules
- setting node_is_initialized after calling V8::Initialize in order to
  make the right decision during initial module registration
- introduced modlist_linked in order to track modules that were
  pre-registered in order to complete it once node is initialized
- completing registration of linked module similarly to the way it's
  done inside DLOpen

### Example

Assuming `src/simple.cc` registers itself via: 

```cc
void init_simple(v8::Handle<v8::Object> exports) {
  NODE_SET_METHOD(exports, "simple", Simple);
}

NODE_MODULE(simple, init_simple)
```

##### `node.gyp` addition

This addition can be done manually or via [nad](https://github.com/thlorenz/nad) which injects parameters derived from the existing `binding.gyp` into `node.gyp` via a simple command.

```json
{
"conditions": [
        [
          "simple_addon==\"true\"",
          {
            "sources": [
              "addons/simple/src/simple.cc",
            ],
         }
    ]
  ]
}
```

#### Loading inside `simple.js`

```js
var binding = process.linkedBinding('simple');
```
Could you please elaborate on the module loader enhancement part a bit @tjfontaine?
I found only one call to `process.dlopen` but used only for `.node` files [here](https://github.com/joyent/node/blob/v0.12/lib/module.js#L495). 

Where would I inject the attempt to load a linked module here?

Also could you provide an example (or correct mine) on how this would be used?
Would I still call `var foo = process.linkedBinding('foo')` or should I be able to just `require` it, i.e. `var foo = require('foo')`.

What would we do instead of throwing an error? Do you mean it to fall through if no linked module is found and continue trying `dlopen` instead?