Started reorganization for work on the reactor version of lnsd.

Basing lnsd off of the reactor is meant to make it run in a single thread
(versus having to do manual locking), as well as to make it portable to
Windows. I'm dropping the SOCKS server, since I don't use it, and it
could be rewritten to be external to lnsd using lnsd's socket protocol.
Consolidated reactor utilities into reactor module.
Added network and control protocol handlers.

There is also a suite of tests to ensure that they detect errors
properly, and that they otherwise decode and encode correctly, which
passes.
Added a transaction system on top of bytestreams.

This allows for bytestreams to be freely manipulated, without losing
their state.
Completed the control protocol handler, and tests for it.

This required a number of changes and additions:

- The hostname in a `Host` structure can be `None`, so an explicit check
  had to be added to `Host.unserialize()`
- The address in an `IP` can also be `None`, so an explicit check had to
  be added to `IP.unserialize()`
- The `ClientHandler` was added to retrieve information from the server.
- The `ProtocolHandler` was added to implement the server.
Added optimization to the transactional bytestream.

Rather than always copy data from the temporary bytestream to the
backing bytestream, the data is only copied when the two bytestreams
have different content.
lnsd is now capable of handling hosts with the same name.

In order to handle this the JSON protocol, between the control handler
on the server and the client, was changed to allow IP messages to
contain lists of addresses rather than just one address. The message
which retrieves the entire mapping now sends back hosts mapped to lists
of IP addresses, rather than hosts mapped to a single address.
Removed documentation and tests for conflict changes.

I've decided to remove the conflict message from the protocol, since the
tools should be able to handle different hosts claiming the same name
without any issues.
Implemented the network protocol handler.
Changed the configuration options that lnsd and lns-query take.

I decided to remove the timeout and heartbeat options, since 10s and 30s
are sensible defaults, and because cases where machines disagree can
possibly cause hosts to drop while they still exist on the network.

For example, a host can have a timeout of 10s while another has a
heartbeat timer of 12s, and the host with the 10s timeout will see the
host with the 12s heartbeat connect and disconnect from the network
repeatedly. Standardizing the heartbeat and timeout parameters prevent
this situation from occurring.

Also, both the external network port can be set, as well as the internal
port used for communication between the client and the server.
Previously, only the external port could be set.
Added the extra port options to the documentation.

I intend to allow the configuration file to specify the network and
control ports, so those options needed to be documented.
Added a handler for the Quit message.
Added hostname handling to the net_proto implemetnation.

I forgot to add this earlier, and in the process of writing the daemon,
I added it in.
Wrote the command line daemon launcher.
Fixed some issues caught by pylint.

This consisted mostly of stylistic fixes, but there were a couple of
references to undefined names lurking about that pylint found as well.
Made some minor fixes.

- The act of sending a message and waiting for a reply in the client
  handler has been refactored out into `send_and_await_reply`
- lnsd.py now handles errors raised by getopt properly, rather than
  possibly dumping tracebacks.
Added the CLI query tool.
Moved all of the files from lns_ng over to lns.

The legacy lns source code isn't needed anymore on this branch, since
all the necessary components are done.
Updated the version number for lns.

Now that the reactor port is tentatively finished (pending further
fixes, which is why I'm not merging this into master yet), and the new
version uses a different network protocol, there is enough breakage to
justify a new version number.
Removed socks module since the proxy is no longer supported.