Document, polish and improve the public API

Covers the remaining public AMQP methods with documentation and doing so
took a hard look at consistent parameter usage and ordering.

  * Cleaned up return value stutter
  * Reordered name/life/id to name/id/route to better match queue
    bindings like name/id(key)/source
  * General types for Qos
  * Remove exchange type consts
  * Shortened DeliveryMode consts
  * Refer to ConsumerTag as consumer identity
  * Remove optional chan passed to Channel.Consume - since deliveries
    are asynchronous no buffering is need.
  * Never let the server generate a consumer tag
  * Only return the receive end of the consumer chan so not to have to
    document that the client is not responsible for closing this chan.
  * Reorder consumer identity to be earlier, as it's significant for
    most clients to contemplate.
  * Rename noAck to autoAck to match the Java client's terminology
Add a publish and consume example for documentation.
Simplify connection related naming

  * NewConnection -> Open
  * Config.Max* remove Max
  * Config.HeartbeatInterval -> Config.Heartbeat
  * time.Duration type for Heartbeat
The Makefile has served its purpose

Extract the spec generator into its own script so that users and tools
like TravisCI assume to use the go toolchain for building.
Speed/simplify tests

Moves the integration tests that were hanging on a server connection
close for up to 5 seconds into the protocol driver tests in client_test.

Tidy up some variable names, removing duplicate coverage.

Close both sides of the pipe type to simulate server connection closes
in the protocol driver.

Speed tests from ~10s to ~1s, without needing t.Parallel()
Common return value for Notify*

This supports the syntax to add a wait condition.

  <-target.NotifyClose(make(chan *Error))

Note: there is still a problem when notify chans are not closed when
they are added after the connection/channel is already closed.
Now covered in uri_test.go

This assumed that an AMQP server is bound to [::1]:5672 which isn't
always the case.
Reconnect by looping around a consumer range
Closes #37
Forward connectionClose messages to all channels

So that errors can be returned from waiting RPC calls return
the connectionClose method from the server.
Propagate connection close events to all channels

Instead of handling channel/connection close methods in the RPC method
call(), select on any error that initiates the shutdown whether it comes
form the connection or the channel.  This keeps special handling of
close methods in one location, the dispatcher.
Implement basic.recover (NOT IMPLEMENTED on RabbitMQ)

Note: this is only here for completeness.  The spec is broken in that it
indicates that basic.recover replaces basic.recover-async but doesn't
indicate basic.recover is synchronous.  Update the spec to generate the
correct code.

This is a good method to integrate test NOT IMPLEMENTED errors.
Document the behavior of requeue in a Nack
Publisher confirms used for reliable messaging

Closes #36

This takes a simple solution of bridging two brokers log topic
exchanges only acknowledging or negatively acknowledging the delivery
when the publishing has been reliable received and handled.
Remove Select from TxSelect like Confirm

This matches the rule to remove "Basic" from basic.* class methods,
remove "select" from channel mode classes like "tx" and "confirm".
Non-error constants made private
Package documentation

Closes #35 - though can constantly be improved.

Pull requests always welcomed!
Bump to Beta status

The API is mostly stable, and feeling good about stability of the
failure modes.
Remove the Lifetime type

Closes #39

The library convienence type Lifetime was to give more semantics to
durable + auto-delete, but ends up obscuring what goes on the wire.
Since other methods are thing wrappers around the wire format, continue
this direction by removing this library type.
Prepare for RabbitMQ not being started on boot on travis-ci.org in the future

See http://about.travis-ci.org/blog/august-2012-upcoming-ci-environment-updates/
Merge pull request #40 from michaelklishin/future_proof_travis_yml

Make your .travis.yml future proof