Introduce Couchdb::Database#put!.

This was written for spec situations where you need to ensure the
presence of certain documents.
Two scenarios to start off canonicalization.  #22.

Specifically:

1. the "exact names aren't changed" scenario
2. the "alternate is mapped to canonical" scenario for source names
Describe, but do not implement, Couchdb::Database#changes.  #22.

I'm not quite sure what I want that method to return just yet.
Specs for Couchdb::Database#changes.  #22.

Also delegate Catalog::Database#changes to its Couchdb::Database
instance, because, well, why not?
First cut at Couchdb::Database#changes.  #22.
Factor out database-connection utility methods.  #22.

Future commits will move the changes feed watcher to a more
Celluloid-friendly class.  As said class contains methods to connect to
a CouchDB database, it'll be useful to have these methods in that class.
Rework ChangeWatcher using Celluloid::IO.  #22.

The primary motivation for this was to be able to use Celluloid's
supervisors to ensure that a ChangeWatcher stays active.

I'm not sure how to make Celluloid::IO's reactor monitor multiple
objects for readability.  (From what I can tell from its source code,
it's not possible with the stock code -- you could probably reuse
Celluloid::IO::Mailbox, but everything else would have to be coded by
hand.)

Considering that #stop really only exists for convenience of
development and testing, the simpler "set a stop flag and wait for the
thread to stop" method works just fine for me.  The heartbeat has been
sped up to 10 seconds to speed up thread termination.  I'll find out
soon enough whether that's too much of a cost in bandwidth.  I doubt it
is, though:

    1 beat / 10 sec = 8640 beats / day = 8.640 kB / day
      = 259.2 kB / month in heartbeat transfers
   (assuming 30 days / month)

One beat every 30 seconds requires one-third the transfer, but piddling
over kilobytes seems like a silly thing to do.

---

This commit eliminates Couchdb::Database#changes: the way in which it
started a ChangeWatcher made it too difficult to e.g. add an actor to a
supervision tree.  A future commit might bring back a convenience method
for construction ChangeWatchers (Couchdb::Database#change_watcher,
maybe) but I don't see a use for something like that now.
Make Celluloid and Rails use the same logger.  #22.
Always raise exceptions from non-main threads.  #22.

This is too useful a troubleshooting aid to leave off.
Fix spacing.
DatabaseReference isn't actually required.  #22.
Don't need to include couchdb/change_watcher for now.  #22.
ChangeWatcher's spec should include the unit it's testing.  #22.
Just use basic auth: no need to extract helper methods for now.  #22.
Filter changes feed by video.  #22.

The mod and rem parameters are intended to provide a way to split up the
changes feed amongst several change watchers, which isn't something that
I necessarily *want* to do, but is something that I really *should* do
to make management of this application across e.g. multiple Heroku dynos
much easier.

Splitting up by the integer portion of the document revision is
problematic wrt load balancing, as all new videos will be routed to one
change watcher.  I'm not quite sure how to fix that (maybe parseInt on
the hex bit?), but for now, it does let me split up work.
Make ChangeWatcher retry connection on ECONNREFUSED.  #22.

Also add some logging.
Add some documentation on ChangeWatcher failure modes.  #22.
Move source and event indexing to change watchers.  #22.
Disable GirlFriday's immediate mode.  #22.

The change watchers already operate in a different thread (and probably
will have to -- I can't think of a way for them to operate in the main
thread), so there's not much point to making the work queue operate in
the main thread.  To make this test robust, I think I'll have to add
some sort of monitoring to the application.
Controlled actor death for integration tests.  #22.