java: Reduce scope of request and socket mutex

Only hold socket mutex while operating on the socket.

Only hold request mutex if expecting a response. Don't hold it anymore
if there is no response expected.

This allows to call setters from one thread while another thread blocks
on a getter call on the same device object.
ruby: Reduce scope of request and socket mutex

Only hold socket mutex while operating on the socket.

Only hold request mutex if expecting a response. Don't hold it anymore
if there is no response expected.

This allows to call setters from one thread while another thread blocks
on a getter call on the same device object.
python: Reduce scope of request and socket lock

Only hold socket lock while operating on the socket.

Only hold request lock if expecting a response. Don't hold it anymore
if there is no response expected.

This allows to call setters from one thread while another thread blocks
on a getter call on the same device object.
csharp,delphi,java: Reduce scope of request mutes even more