Fix unit test failure under Mono + other improvements

Summary:
This fixes the unit test failure under Mono by sending and waiting for confirmation after a property has been set.

It also ensures that the `LocalNode` class is reusable between `Bind()` and `Close()`, without the previous binding influencing the next.  All warnings have also been fixed in the code base.

Test Plan: Ran the unit tests.

Reviewers: Sabre070

Reviewed By: Sabre070

Maniphest Tasks: T273

Differential Revision: https://code.redpointsoftware.com.au/D152