Allow build() to accept an include option, for use with caching

### Refactoring
- BelongsTo and HasOne associations now set a default alias. This is to ensure they are signular all the way through the app. Had to fix some tests to reflect that, but only internals should be changed - I.e. no public facing stuff should be changed.
- Moved nested association building to dao instead of abstract/query
- Grouped prepareJoinData and groupJoinData into one function to save a loop

### New feature
Allows you to pass an include option to build(). This comes in handy if you have saved the entire JSON string (with preloaded models) in a cache like redis or memcache.

[Examples](https://github.com/mickhansen/sequelize/blob/5ab3b62b700ee20440233cb9e79dd45746457426/test/dao-factory.test.js#L372:L465)

#### Does not support saving of the build()'ed associations
This PR does not currently make it so you that .save()'ing will result in the associations being saved aswell.