Refactor communication infra

This is one phase in many, there is still a lot to do but it's a good
step in the right direction.

As I said, this is far from complete but it's enough code for a commit
IMO.

- Properly layer code to allow multiple transports
- Isolate json-rpc logic to the actual json-rpc layer
- Someone more conferment but still incomplete json-rpc 2.0 implementation
- Make sure tcp handling uses one thread
- Write some more tests

Change-Id: I7a65364824cc8433263ccf6ed44f1f97141eff2c
Signed-off-by: Saggi Mizrahi <smizrahi@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/9986
Reviewed-by: Dan Kenigsberg <danken@redhat.com>
Tested-by: Dan Kenigsberg <danken@redhat.com>