Test configuration now runs tests from all modules

Since I'm adding tests to bytestreams.
Reimplemented Source.concat, fixed bugs

Credit: Guy Banay
There was a bug in Source.concat where the source Iterable[Source[T]]
passed to it was read greedily, which broke if the source iterable was a
nonterminating scala Stream. Also, the new implementation is nicer.
Fix: handle failure of onSubscribe() call
Added `BytePipe.take` and `BytePipe.drop`.

Renamed the old version of `take` to a more correct `takeTap`.
Added `Pipe.combine`, combines a Source and Sink into a Pipe
Fix: cancel source stream if cancelled
Multiple fixes

- Fix: don't log error if terminating due to upstream being canceled
- Fix: race between completing sinkDonePromise with success and with
failure caused `nextStep` to exit early
Added more tests
Organize imports

Sync with Foresight code
A script to sync code from Foresight repo to this

Ignore this if you don't work at Foresight
Update the README wrt. stability and future plans