Fix dynamic shared methods can't hide

I'm trying to fix https://github.com/strongloop/strong-remoting/issues/94

Put the following code in a boot script. It should hide all the routes except *POST /api/Users/login*.
```js
User.sharedClass.methods().each(method) {
  method.shared = false;
});
User.sharedClass.find('login', true).shared = true;
```

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
Have to use `name` instead of `fn`. `fn` might different from `sharedMethod.fn` even they have the same name.

e.g., in `Model.belongsToRemoting()`, `this.prototype[relationName]` becomes `sharedMethod.fn`, and `'__get__' + relationName` becomes `sharedMethod.name`. This will cause that `SharedMethod.prototype.getFunction()` will return `ctor.prototype['__get__' + relationName]`, and `SharedMethod.prototype.isDelegateFor()` will always return false.