Simplify error handling

This removes the PGError interface and renames the pgError struct as PGError.
The default representation of a PGError now uses the human-readable 'M' field which should be most appropriate. 
The C field is now exported for detailed error code access.

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