Fix StoredProcedure / sequential interaction

The first row in a stored procedure command that has output parameters
needs to be traversed twice - once for populating the output parameters
and once for the actual result set traversal. Fixed logic around this.
Removed code contract test harness

Made all contract violations be raised as ContractExceptions, which means we
can't check their types in unit tests
Fixed reader resultset flow

* For non-prepared queries, mistakenly deferred the reading of the first RowDescription
  to the first read, undid this.
* Also fixed FieldCount
Corrected exception type in GetFieldIndex
Work on NpgsqlDataReader

* Fixed verification that a row is present and ready, added public accessor for that fact
* Copied the previous implementation of GetTableSchema(). Changed the meaning of ColumnSize,
  ProviderType, ProviderSpecificDataType to align with SqlClient.
* Implemented GetDataTypeName, GetName, GetOrdinal, this[string] and added tests