drivers: improved IF for low-level GPIO driver

Improved the GPIO interface and adjusted existing implementations to it.

Tested for
- stm32f0discovery
- stm32f4discovery

Not (much) tested for `arduino-due`, as proper implementation for it will follow later tonight in a separate PR.
The rationale here is, that you address devices only using the enum values, which would make a wrong usage impossible. Since we are still talking about slim low-level driver without much error handling, I think this should work fine also without the default case. In my opinion this i) safes a little bit of code size and ii) is a little more efficient through void return values.