Rails-style polymorphic relations

All relations are supported: hasOne, belongsTo, hasMany + through, hasAndBelongsToMany + through. 

Note that explicit through-models are needed, since the intermediate model cannot be created automatically - it's being shared with different models.

Inverse relations are supported as well, and the right model type will be returned.

See also: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

Examples:

``` javascript
// belongsTo (main polymorphic model)
Picture.belongsTo('imageable', { polymorphic: true });

// hasOne
Author.hasOne(Picture, { as: 'avatar', polymorphic: 'imageable' });
Reader.hasOne(Picture, { as: 'mugshot', polymorphic: 'imageable' });

// hasMany
Author.hasMany(Picture, { polymorphic: 'imageable' });
Reader.hasMany(Picture, { polymorphic: 'imageable' });
      
// hasAndBelongsToMany + through (will setup Picture.belongsTo)
Author.hasAndBelongsToMany(Picture, { through: PictureLink, polymorphic: 'imageable' });
Reader.hasAndBelongsToMany(Picture, { through: PictureLink, polymorphic: 'imageable' });
```





I'll spend more time looking into details tomorrow (Monday). At high level it looks good. Hopefully we can get it merged soon. Same for the other PR.

It would be great if you can put together some documentation for the new features you contributed recently. I'm sure the community will benefit from it. Draft write-up is good, we can ask @crandmck to polish it. See http://docs.strongloop.com/display/LB/Creating+model+relations