use callbacks over streams, move foreign key logic into separate files (WIP)

this isn't ready yet, but here's a breakdown of changes so far:

- moved hasMany/belongsTo into `foreign.js`
- converted streaming APIs into callback ones (except `get`)
- updated tests