[server][SimpleSemaphore] Add a new class: SimpleSemaphore.

mlpl::EventSemaphore uses eventfd. So its post()/wait() always
enter kernel mode. However, it has a feature that can wait for
posts with poll().

On the other hand, SimpleSemaphore is based on the POSIX semaphore
whose implementation typically uses user-land code and futex.
So it's expected to be faster than EventSemaphroe in general.
[server][HatoholArmPluginInterface] Add a new class HatoholArmPluginInterface.

This class is asummed to used by both Hatohol server and plugin processes.

I'll reimplement HatoholArmPluginGate with this calss as its base class.
[server][HatoholThreadBase] Replace MutexLock with SimpleSemaphore, because it's natural conceptually.
[server][HatoholThreadBase] Replace MutexLock with SimpleSemaphore, because it's conceptually natural.
[server][HatoholArmPluginInterface] Implement the code to receive data from an AMQP broker.
[server][HatoholArmPluginInterface] Make it to be MT-safe.
[server][HatoholArmPluginGate] Fix a bug that sometimes causes a deadlock.

This fix has been leaked when issue-171 branch was merged.
[server][testHatoholArmPluginGate] Fix a problem that might fail wrongly.

If the message comes after the target process terminated, test cases
couldn't receive the message the target sent.
[server][testHatoholArmPluginInterface] Add a new test.
[server][Helpers][GMainLoopWithTimeout] Make the class MT-safe.
[server][Helpers][GMainLoopWithTimeout] Rename to make it simple.
[server][Helpers][GMainLoopAgent] Extend run() so that callers can specify arbitrary callback funtion for the timeout.
[server][Helpers][GMainLoopAgent] Remove the timeout parameter for easy use.

If we meet the situation when we need to explicitly give the timeout
value, we'll add the way to realize it at the time.
[server][testHatoholArmPluginGate] Use GMainLoopAgent instead of the similar inner class.
[server][HatoholArmPluginInterface] Disconnect and unblock receiver.fetch() when exitSync() is called.
[server][testHatoholArmPluginInterface] Add a new test: test_onConnected().
[server][testHatoholArmPluginInterface] Add a method that returns a TestContext object instead of preparing getter methods to reduce the volume of code.
[server][testHatoholArmPluginInterface] Make a TestContext instance in a test case to make it easy to set and get the value in it.
[server][HatoholArmPluginInterface] Fix up a receive loop.
[server][HatoholArmPluginInterface] Add an API description.