Refactor tests

This goal of this PR is mainly to make testing get rid of processes, and provide better API to write tests. This could make tests more flexible, extensible and faster.

It introduces Instance and Cluster struct into tests, which helps to write tests.

Current version is the framework of the change. Some stuffs will be released in this PR later:
1. Rewrite tests/functional/*_test.go to use Instance and Cluster. This is blocked because I am waiting for passing all tests for etcd master.
2. Remove tests/functional/util.go

It keeps the workflow in tests as much as possible. The other possible improvements on the tests will be made in other PRs.

This PR also makes the preparation for using simulated transporter layer instead of port to deliver messages.