Computer foreignKey for belongsTo() from the "as" option.

If "foreignKey" is not provided, but "as" is provided, then compute the
"foreignKey" from "as". This behavior matches the behavior of hasOne().
Fix errant references to this.options.underscored in associations.

The correct references should always be in relation to this.source
or this.target, for their respective tables.
Merge pull request #1411 from geekmug/milestones/2.0.0

Fix foreignKey naming bugs in belongsTo(), hasMany(), and hasOne()