Rewrote GPIO driver to be disposable

Driver will allocate with constructor and release during disposal