Tweaked program for better parallelism

*Removed contention for solution queue - gave each thread a pointer to its own list of solutions.
*Made each thread only enter the monitor once when it needed to deposit entries into the global work queue, instead of locking and unlocking for each item that needed to be deposited.