Addressing issue #27.
Basically I had to implement streaming because Netlink won't fragment data on
its own. It's great that we no longer kmalloc massive chunks of memory though.
Two major side effects:
- We're now using Netlink's header and options in a more standard way.
- Functions all over the place now return system error codes instead of
customized ones (also a means to better match Netlink's design).