use a closure instead of .bind()
update deps, use bluebird instead of q
better error message when a non-yieldable is yielded
preserve key ordering

thanks @greim. closes #120 closes #121
3.1.0