Split implementation for remote commands to separate classes
Implement remote commands in a separate file
Remove needless class methods
Use NodeStatus instead of Serf.status_file
Don't restart serf too frequently
Remove codes to observe status file and restart serf.

It is not needed anymore.
Implement "join" command for Serf
Accept multiple hosts
Fire "join" event for the serf cluster if there is any new members
Add missing serf node name
Initialize payload only when it is available
Don't assign to a variable with a name same to another method
Calculate added hosts correctly
Update list of live nodes correctly