Add proper support for query and network timeouts

• All Commands have a network timeout that is set by the PGConnection.
• Network timeouts are handled by limiting the amount of time the command will "wait" for a server response
• All QueryCommands have a query timeout
• Query timeouts are implemented by sending a CancelRequest upon expiration of an execution time managed by the Protocol implementation