Allows Discriminators in relationships

- Refactor hasMany & hasAndBelongsToManyRelationship

closes #13

LGTMs Nick & Jon