feat(command): add version to join command

Add a version to the join command. Add a versioning document to discuss
some of the design decisions.
feat(raft_server): do not allow mixed versions

fail to join if there is an internal version mismatch.
fix(command): change Version to RaftVersion

clear up confusion on what this field is used for: it is for the
internal raft protocol version only.
fix(raft_server): add comment on version field

explain what the version field is for and why it is set to
releaseVersion
fix(version): add raftVersion to the version file
fix(raft_server): rename getLeaderVersion to getVersion
feat(README): add some new projects
feat(README): add etcd-vim
Merge pull request #131 from philips/add-new-projects

feat(README): add some new projects
feat(README): add etcdenv project
Merge pull request #132 from philips/add-new-projects2

feat(README): add etcdenv project
chore(name_url_map): rename version to raftVersion

make it more clear that we are referring to the raftVersion.
Merge pull request #130 from philips/add-version-to-join2

add versioning to cluster join
add killallAndReocery test
Merge pull request #133 from xiangli-cmu/master

add killAllAndRecovery test
add remove peer
change getMachines
use commandname
simplify remove/join process; add tests
if the whole cluster dies, should not panic