refactor to support pluggable backends and shutdown cleanly

We want to support multiple backends for different types of
encapsulation. This patch defines an interface for initializing,
running and stopping the backend. It also ports existing encap
to into a udp backend.

Fixes #14.
make backend selectable and configurable via etcd config key

This allows the user to change the backend configuration in one place.
For example, changing a port used for encap in etcd is less error prone
than passing it to every instance.
add allocation backend that performs no data forwarding

For environments that support a host having a whole subnet, it is
useful to let Rudder just do the address allocation and use native
networking for data flows.
work around etcd not returning expiration

In case etcd fails to return expiration on keys that have a TTL,
calculate the expiration ourselves. It's a good way to bulletproof the code
fix issues based on code review
Merge pull request #34 from eyakubovich/master

Support multiple backends and add alloc backend