Use `const middle_query_t *` everywhere in the output classes.
Move `shared_ptr` header to parse, as it is not needed in osmtypes.
Added first pass attempt at `output_multi_t`.

This is an output which manages a single table and processes
geometry in a configurable way using the companion
`geometry_processor` object. It's just a bare-bones thing at the
moment, and definitely doesn't work.
Use C++ `std::string`s in `options_t`.

This is to allow `options_t` to be copied safely, and passed by
reference to `output_t` instances which will be able to own them.
Made `output_t` own a copy of the `options_t` object.

This allows it to be overridden for the `output_multi_t`
implementation.
Hook up `output_multi_t` to the `output_t` factory.
merge mla branch and kk branch