dns: fix and test move semantic

To test the move semantic, I think from now on we
should the following:

1) make sure that all attributes are initialized when
   they are declared (either because they are class
   instances or because they are explicitly initialized);

2) make attributes at least protected to derived classes
   designed for testing could be written;

3) manually implement move constructor and move assignment
   so we are sure that the object whose state is transferred
   is left in a sane (albeit empty) internal state;

4) write unit tests for testing move semantic;

5) to this end, use 2) and follow the patterns committed
   along with this diff.
Tweak Resolver() for correctness

Make sure that Resolver() access its settings parameter using
a stdlib API that does not mutate settings.

That is, use find() + at() rather than [] + [].
Implement HTTP response parser
Implement HTTP stream

While there, define and use Headers as std::map from std::string
to std::string.
Implement HTTP request serializer
Implement HTTP response class
Implement HTTP request (= the verb, not the noun)
Implement basic HTTP client
Fix unit test and reduce verbosity
Merge pull request #56 from TheTorProject/fix/dns_bugs

Fix two dns bugs
Implement body-terminated-by-EOF semantic
.gitignore test/protocols/http
Merge pull request #57 from TheTorProject/feature/http_client-v2

Add basic HTTP client functionality
Merge remote-tracking branch 'origin/master' into feature/ooni

* origin/master:
  .gitignore test/protocols/http
  Implement body-terminated-by-EOF semantic
  Fix unit test and reduce verbosity
  Implement basic HTTP client
  Implement HTTP request (= the verb, not the noun)
  Implement HTTP response class
  Implement HTTP request serializer
  Implement HTTP stream
  Implement HTTP response parser
  Tweak Resolver() for correctness
  dns: fix and test move semantic
Merge branch 'feature/ooni' of github.com:thetorproject/libight into feature/ooni

* 'feature/ooni' of github.com:thetorproject/libight:
  stringbuf => string because stringbuf is non-copyable