fix gpio hal
 - to allow multiple pin allocation to single gpio handle
 - remove direct kernel linkage