Add ProcessCommand.

ProcessCommand is introduced to provide OS dependent process commands. This
patch implements sending a terminal signal only because it is the only
command we need at this time.

ProcessCommand has a factory method to retrieve the OS specific ProcessCommand.
One can retrieve the instance using the apply method of ProcessCommand.
Add terminateProcessIfExists.

terminateProcessIfExists removes the pid file on restart and sends terminate
signal to the pid written in the file.

The next patch will make MongoDBLauncher and ZooKeeperLauncher use this
function.
Make ZooKeeperLauncher use terminateProcessIfExists.

Currently, ZooKeeper server doesn't restart when ZooKeeper server breaks down
because pid file exists. This patch makes ZooKeeperLauncher delete the old pid
file to make it possible to start ZooKeeper server.

Also differentiate ZooKeeperLauncher start/stop and ZooKeeperServer start/stop
when logging.
Terminate MongoDB when MongoDBLauncher restarts.

Currently, mongod has the same life cycle with MongoDBLauncher. This patch
splits mongod and MongoDBLauncher life cylces so that mongod is alive after
MongoDBLaucher stops. MongoDBLauncher kills the mongod only when
MongoDBLauncher restarts.

Also differentiate MongoDBLauncher start/stop and mongod start/stop when
logging.
Health check MongoDB server.

This patch makes MongoDBLauncher throw ServerNotRespondingException when the
server does not respond. LauncherSupervisor makes sure MongoDBLauncher restarts
properly.

MongoDBLaucher uses Status command for health checking.
Merge remote-tracking branch 'origin' into check_password