Added middleware framework

NOTE: This branch is on built (and therefore includes) `acron:logging`

Introducing middleware.h:

Adds the ability to inject middleware handlers both pre and post response:

    class ExampleMiddlewareHandler : public crow::IMiddlewareHandler {
    public:
        crow::response handle(const crow::request& req, crow::middleware::context *c) override {
            // pre-response
            auto result = c->next();
            // post-response
            return result;
        }
    };
    
    crow::middleware::use(std::make_shared<ExampleMiddlewareHandler>());

(Macros coming soon!)
I dislike this - is there another way to capture a member variable in a lambda?