Merge listener and replay functionality

I like architecture of http://fluentd.org/, it have multiple input and output sources, and fluentd instances can be combined like LEGO bricks. 

I want same for Gor, and think It should be logical move, and it will improve overall flexibility. 

## Examples of current functionality:

Listen data raw socket and replay it different Gor instance
```
gor --input-raw 9000 --output-tcp replay.server:27017
gor --input-tcp 27017 --output-http staging.dev
```

File replay:
```
gor --input-raw 9000 --output-file requests.gor # capture
gor --input-file requests.gor --output-http staging.org # replay
```

Replay to multiple hosts:
```
gor --input-raw 9000 --output-tcp replay.server:27017
gor --input-tcp 27017 --output-http staging.org --output-http "dev.org|10"
```

## Examples of functionality that will be possible after change:

Listen and replay with **one** Gor instance:
```
gor --input-raw 9000 --output-http "staging.org"
```

HTTP Input #45:
```
gor --input-http 8080 --output-tcp "replay.org:27017"
```

And much more. 

What would you think @slawosz @dcarley ?