Use NpgsqlException for backend errors only

- We now throw NpgsqlException only in case of a backend-generated issue, as per the DbException/SqlException specs.

#330