A source can now be created when creating a metric

- If metric.source is a string, just save the string
- If metric.source is an object, save the new source then save
  the metric with metric.source = source.name
- This is not an atomic operation