add license information into module headers
WIP
Introduce a way to enable unsafe constructs.

Unsafe constructs allow faster implementation of some use cases,
that will require less locks, however this means that some
cases will be undefined. For example send while endpoint is closing
is not defined. Some of this cases will be fixed in future.
Add masks, fix cabal file.
Add throughput benchmarks.
fix cabal file.