Add InputStream/OutputStream and many more changes

- remove some irrelevant fields from api/device dicts

- replace device dicts with plain device IDs in Stream constructor
  and add more arguments (as replacement for dicts)

- change apis() to hostapi_info() and devices() to device_info().
  Both take an optional device ID.

... and several more things.
Add options latency='low' and latency='high'
Change stream flags to named parameters
Abort stream callback on error

If an exception is raised within the callback or if the wrong type is
returned, the stream is aborted instead of being called all over again.

Exceptions are not propagated to the main thread, instead, they are
printed to stderr.

See https://cffi.readthedocs.org/en/latest/#callbacks
Add 'init' object to module namespace

This object hold default values for streams and allows users to override
these default values.
Add print_devices()