Implement the release! interface.

The release! interface was described in the README, but not implemented
in the code. We implemented it for all three backends, and added some
test coverage for the PostgreSQL backend.

With the PostgreSQL backend, release! causes the table backing the atom
to be dropped.

With the file backend, release! causes the file to be deleted.

With the memory backend, release! does nothing.

Attempting to read or write an atom after it has been released will
raise an exception, even for memory-backed atoms.

We added integration tests for the PostgreSQL backend, but disabled them
in the default test selector, since they require that the user set up a
suitable database beforehand. We added a new test selector, :all, to run
all tests including the Postgres integration tests. To run the tests,
the test.database.url system property will need to be set; we added a
:jvm-opts in the project.clj with an example value.

Authors:
Jessica Kerr
Tanya Romankova
Eli Naeher
Chris Freeman