move all of the parsing statitics out of osmdata_t and into a parsing delegate and its underlying parsers. move the knowledge about which parser parses what into the delegate. still have a bug somehwere with respect to the tags keyval object
oops wanted to keep the references of tags from parse delegate to individual parsers
fix regression where action_t was not being updated on subsequent passes
make use of proper projection object everywhere instead of storying srs only in options
tried to move out mid and out from options. move options into out. this way we can pull them out of eachother constructors and do this all in osmdata_t. unfortunately i've gotten myself into a chicken and egg thing at present..
finish removing output_t and middle_t from output_options. now all access between middle and output happen directly. this should make pulling them apart easier (less objects to touch). note that this code is not very nice but its a temporary (possibly even lateral) step towards getting mutiple backends (ie decoupling middle and output)
Added first pass of moving 'done' logic to output.

The middle keeps track of the items which have changed due to
updates to the OSM elements, i.e: a way is marked pending because
a node that it uses has changed. However, the output also made
some decisions about what to track by passing a `pending` flag to
some methods, and calling `ways_done` or `relations_done` for some
elements.

We want to have multiple outputs for the same middle, so we need
these decisions to be made for each individual output. This commit
is the first step, by moving all the custom 'done' tracking to the
output types via a shared, provisional tracker, which will be
written properly in the next pass.