Adjusted request headers to be type safe

Currently, `HttpRequest`'s `method` field is not strongly typed. Instead, they're handled as strings internally.
This patch provides strong type safety for the possible methods, as well as handling the case of an unexpected method explicitly.

It also fixes the issue mentioned in the comment by requiring fully qualified access to the well typed names:

    /// If you are getting compile-errors
    /// on this; make sure you don't mean the similarly named functions from the
    /// Applicatives module, e.g. by opening Applicatives after opening Http.


While the qualified access is a breaking API change, any client-side adjustments should be very minor outside of the Unit Testing.