Factor out common Connect() and Disconnect() boilerplate

In the long run, I try to implement custom error handling atop the functionality
the libfreefare provides. For now, I just try to factor out as much redundant
error handling as possible.
First few DESFire functions
Revamp error handling, introduce type Error

This revision unifies error handling. All functions use the error codes provided
for PICC and PCD errors plus some custom error codes and use them for their
error handling. A new internal function freefare.(*Tag).resolveError() helps
figuring out what is wrong.

Some functions (all in tag.go) still use custom error handling mechanisms; this
might change as well.