dev/pipe: make pipe a type of device

Pipe have many differences with char device. The main difference is
altough pipe have both read and write, it is unidirectional in nature.
dev/portal: implement portal device

Portal is a device that connect devices. Currently, you can only connect
pipes in portal. Pipes are unidirectional. But with portal, you can
construct a bidirectional device with two pipes.
Merge pull request #144 from grissiom/portal-device

Portal device