Add telemetry caching
With the recent addition of lazy-loading it was possible to get into a state where logged telemetry wouldn't be sent due to the client not being ready. This releases adds caching which stores logged events created before the client is ready and then sends them once it is. Additionally, a larger refactor was done internally to reduce duplicated appender code.