REORG: http: move the HTTP semantics definitions to http.h/http.c

It's a bit painful to have to deal with HTTP semantics for each protocol
version (H1 and H2), and working on the version-agnostic code further
emphasizes the problem.

This patch creates http.h and http.c which are agnostic to the version
in use, and which borrow a few parts from proto_http and from h1. For
example the once thought h1-specific h1_char_classes array is in fact
dictated by RFC7231 and is used to parse HTTP headers. A few changes
were made to a few files which were including proto_http.h while they
only needed http.h.

Certain string definitions pre-dated the introduction of indirect
strings (ist) so some were used to simplify the definition of the known
HTTP methods. The current lookup code saves 2 kB of a heavily used table
and is faster than the previous table based lookup (typ. 14 ns vs 16
before).
diff --git a/include/common/buf.h b/include/common/buf.h
index a1355e6..4208820 100644
--- a/include/common/buf.h
+++ b/include/common/buf.h
@@ -29,6 +29,7 @@
 #define _COMMON_BUF_H
 
 #include <stdint.h>
+#include <string.h>
 
 /* Structure defining a buffer's head */
 struct buffer {