Cleaned up some code and added improved logging.

Specifically, this commmit:
-Removes unused memory and CPU configuration variables
-Changed the state store to keep only backend names, and not
resource usage (because the resource usage numbers weren't used)
-Added logging about RPC times, and about garbage collection
Fixed deadlock.

This commit replaces the producer/consumer queue that previously
took task reservations and launched them (using a blocking RPC)
on application backends.  Instead, this commit adds a
producer/consumer queue that contains reservations that correspond
to tasks that can be launched.  A thread pool pulls reservations off
of this queue, requests the task from the scheuder, and (if the
scheduler replies with a task) launches the task on the backend.
This change allows the use of blocking clients, which simplifies
the code and eliminates hairy issues with needing to use a pool of
clients to ensure client reuse.