Implemented a cleanup worker for deleting metrics

There are 3 main changes in this pr:

1) Added a cleanup metrics and delete functions to state to allow metrics to be deleted
2) Added an API endpoint for calling the CleanupMetrics function
3) Added a worker that will periodically call the cleanupmetric function

The worker never gets called - except in tests - that will come in a follow up pr.
The CleanupMetrics function currently just returns an error. In a follow up it will return a list of the uuids that were deleted.
I'd rather have something like this:
```go
select {
case notify <- struct{}{}:
default:
}
return nil
```

That way if notify is nil, we won't try sending anything (the select case will be off), and if notify is not nil, but nobody is waiting on it, we won't block the call.