setting up basic python packaging for rejester
initial version of rejester.Registry with tests and a stub for
rejester.TaskMaster.

Registry offers a "lock" method for running several commands without
any other workers executing a command.  Note however that this does
NOT provide rollbacks.  Fortunately, most things that need guaranteed
atomicity can be implemented as Lua scripts.  Several Registry methods
are implemented via Lua scripts already.  These methods require that a
lock be acquired first.  This can be deceptive, because it appears to
suggest that the lock will provide a rollback, when it really does
not.  Implementing a rollback at the application level would be hard
or impossible in many cases.
gracefully handling empty dictionaries in the rejester.Registry
switching from list to hold keys to SortedSet, which is more correct
because we never want to instances of the key in the list,
and this sets the stage for putting *priorities* on the keys
introducing priorities and priority_min/max kwargs for filtering by
the underlying "score"
introducing getitem_reset for pushing things "ahead" in a time-based priority queue
introducing re_acquire_lock for refreshing a lock during a session
test for re_acquire_lock
basic TaskMaster and tests for it are now passing
making RejesterException base exception
using the PEP440 style version strings
need to use PID in namespace string to avoid collisions when running tests in parallel
PEP440 uses x.y.z.devN numbering with z+1 compared to the previous
tag, so that devN is counting up toward whenever the next tag happens.
introducing move_all and reset_priorities, and putting priorities into len
more tests, especially around priorities
introducing TaskMaster methods for managing workers,
including (un)register_worker, set_mode, get_mode, reset_all, and related
adding pytest decorators for --runperf and --runslow
introducing a multiworker test that verifies that workers can be controlled
by the modes set on the TaskeMaster.
adding emacs~ files to gitignore
adding RELEASE-VERSION created by version.py to the .gitignore