Better Queue data structure.

This commit provides a subclass of Queue.Queue that allows (hopefully)
threadsafe modification of objects within the queue, rather than just
pushing and popping objects onto and off the queue. There should be
enough documentation in the module to make the new data structure
understandable.

Having this should hopefully simplify the implementation of Mdrunr.

I have also included a few unittests to check stuff works more or less
as expected.
Use RLocks instead of Locks.
Change in repository structure, added tests, changed queues.

I have changed the repository structure, adding one more layer between
the base and the source code. This makes importing modules easier (you
can just add the project directory to PYTHONPATH), and is the standard
in pretty much all Python projects, as far as I am aware.

I have also added basic unit tests for some of the code.

Finally, the internals of the queuing system have changed to make use of
the new queue data structure.
Updated iawful for slight changes in Mdrunr API.

Also added unit test for iawful.
Fixed possible name conflicts when adding jobs.

Previously, submitting a job to the queue whose name clashed with an
existing job just resulted in the job being overwritten.

New jobs are now renamed to avoid conflict.
Merge pull request #11 from pbugnion/keyqueue

Keyqueue and repository structure.