Removed classes for simple client messages

Previously, sending a message to the backend involved instantiating
a class, and calling its WriteToStream() method; the instance would
then be thrown away. This caused needless instantiations for a great
deal of messages, and made the workflow more complicated than it
needed to be.

Moved the actual wire-writing code to NpgsqlConnector. This commit
refactors the simple message types: Cancel, Describe, Execute, Flush,
Parse, Password, Startup, Sync.

Relates to #308
Improvements to binding

- We were allocating and managing bound parameter values and format codes lists
  inside NpgsqlBind. Refactored this into NpgsqlParameter - each parameter manages
  their own binding data, reduces allocations and simplifies code.
- Removed NpgsqlBind class (see previous commit)
- Relates to #308
Removed class for NpgsqlQuery

- Removed class instantiation for NpgsqlQuery message (see previous commits).
- New QueryManager handles the details of writing queries to the wire and to
  pre-build some commonly-used queries for efficiency.
- Relates to #308
Merge pull request #374 from roji/remove_message_classes

Reduce allocations by removing client message classes