Rewrite Pio{8,16,32} as generics
Created by: imp
While working on PCI stuff I noticed that while MMIO is implemented as generics, PIO isn't. Since I am trying to use generics in PCI code as well I thought it is a good opportunity to convert the PIO to use generics as well. [Little did I knew about how to do it right. However, I am glad I went through it as I learned a lot. Special thanks to @Ticki for helping me out!]
Anyway, this work is splitted into 5 commits. Each does only one thing for the ease of review. I do appreciate review by the way.
I believe the new interface in pio.rs is a little bit cleaner. And it resembles mmio.rs now, which is nice. I think I will be able to unify it even more eventually.
Also as a nice side effect I was able to drop some number of unsafe
blocks.