initial stab at network refactoring

break RestClient into Transport and Retry/NetworkClient
make it easy to add other transports w/o duplicating retry logic
add fall-back to other nodes if the current one is dead
relates to #74
relates to #114
propagate network refactoring

isolate commons http dependency in its dedicated package
introduce HttpStatus class
introduce status check methods on Response interface
relates to #114
relates to #74
wrap up network refactor

complete code changes and add minor fixes
remove use of array in favor of Map inside HttpStatus
better flow for catching network errors
add discovery of nodes to ES [Input|Output]Format
relates to #114
relates to #74
fix bug causing bulk requests to minimize in size
fixes #114
fixes #74