Nio/async socket

Implementation of AsynchronousChannel for TCP Client and Server Sockets. 

Full functionality included is: 

- Introduced `Exchange` type 
- AsynchronousChannel client and server `Exchange`
- Introduced `Bytes` for fast and immutable array manipulation w/o copying Array[Byte] around
- Added CopyOnWrite

@pchiusano  can you please take a quick look. I put in CoW, but didn`t plug it into the NIO. I am still lucking to understand the benefits that this would add, as I still see thy CoW to behave almost exactly as Array.take(n) for now. 

Maybe if you can take a look and just point me where we would benefit from CoW?