crypto: introduce ECDH

cc @trevnorris 
Wouldn't it be better to do:
```cpp
ECDH(Environment* env, v8::Local<v8::Object> wrap, EC_KEY* key)
    : BaseObject(env, wrap),
      generated_(false),
      key_(key),
      group_(EC_KEY_get0_group(key)) {
    MakeWeak<ECDH>(this);
    ASSERT(group_ != NULL);
}
```