Simplify error handling

This removes the PGError interface, the previous unused Error type, and renames the pgError struct as Error.
The default representation of a PGError now uses the human-readable 'M' field which should be most appropriate. 
The error details are now exported as Details.

This additionally removes the potentially-confusing two-layer recover() situation in conn.Open()