Adds prototype NG driver apis

Includes an IPC system for out-of-process drivers so users won't have to recompile the registry to bring their own drivers. Also, drivers can potentially be written in any language with a functioning [libchan](https://github.com/docker/libchan) implementation.
I suppose, receiver.Receive supports unpacking into an anonymous struct. It should help to get rid of type conversions.
It looks like:
```go
var response struct {
    Contents []byte
    Error string
}
err = receiver.Receive(&response)
    if err != nil {
    return nil, err
 }
 
if p.Error != "" {
   err = errors.New(p.Error)
// err = fmt.Errorf("blabla error %s", p.Error)
}
return p.Contents, err
```