added non blocking semaphore and lock. large refactor. renamed s_mach.future to s_mach.concurrent