Move all state-machine semantics into the implementation and only expose a pure virtual interface for providers to implement. Remove specific event-handlers and instead go fo an extensible location::Event with location::Provider extending on location::Event::Receiver. With that, we can easily extend events going forward in an ABI compatible way.