Use <http-version> and <request-method> in <base-http-request>
Add a <http-request> class to manage a request at high level

The idea is to use this class to manipulate the request at an high level,
for example by the library's user, and then convert it to the more low level
representation <base-http-request> to send it to the server.
Use table macro in client tests
Use <http-request> as a base for every http method

This commit also changes the base class of <http-request> to
<raw-http-request>.