TODO
-----
- Set permissions on created device to restrict access
- Secret handshake between device and daemon
- Revisit socket send/recv synchronization
- Implement configurable multi-block I/O & tag queue size
- Use kernel standard linked lists
- Support device partitions (HDIO_GETGEO, minors)
