fix: bad marker behaves like non-existing marker

From the point of view of the interface, a marker should has only
two states: returning some messages, or returning no messages.
Currently a malformed message marker results in a 400 response,
which makes the marker no longer opaque.

This patch makes the transport respond 204 for a malformed marker
by making storage return an empty iterator in such a case:

  GET /queues/q/messages?marker=malformed  ->  204

This patch also include some clean up on test code.

Change-Id: I1ac7d4bb42af1644bd16d6bca6b7c50a1d700e10
Closes-Bug: #1212389
Log pymongo's exception on ConnectionFailure

Log pymongo's exception instead of hiding it. The exception is needed
for debugging.

Change-Id: I89991f956487e3f55c940f5a1aa9c204ccb2fc33
Added a PyPy env to tox

Change-Id: I518256f0a8a3e581c3d6f6f065c9b89adc8223f2
Merge "fix: bad marker behaves like non-existing marker"