Always try /dev/mem after /dev/gpiomem fails
Always try /dev/mem after /dev/gpiomem fails

This solves an issue with Ubuntu Core 16 and applications installed
using snap. /dev/gpiomem requires superuser privileges on Ubuntu
Core, and there currently is no interface available to access it
through the security sandbox. That means the user has no way to
manually fix DevGPIOMemPermissionDenied errors.

Instead of immediately returning DevGPIOMemPermissionDenied, rppal
will now first try to open /dev/mem before returning an error. A
new PermissionDenied error has been defined that's returned when
both /dev/gpiomem and /dev/mem have permission issues.

This is just a workaround. A better solution would require Ubuntu
Core to change the permissions on /dev/gpiomem to allow
non-privileged read/write access, and add an interface to connect
applications that require this access.

Fixes #1

golemparts/rppal