message: Added lambda variant to ActivityStart in TraceMe.
  For example metadata can be added to the trace like
  ```
  uint64 id = ActivityStart([]() {
  return TraceMeEncode("my_trace", {{"key1", value1}, {"key2", 42}});
  });
  ```
diff: @@ -192,6 +192,23 @@ class TraceMe {
  // Static API, for use when scoped objects are inconvenient.
  + // Record the start time of an activity.
  + // Returns the activity ID, which is used to stop the activity.
  + // Calls `name_generator` to get the name for activity.
  + template <typename NameGeneratorT>
  + static uint64 ActivityStart(NameGeneratorT name_generator, int level = 1) {
  +#if !defined(IS_MOBILE_PLATFORM)
  + if (TF_PREDICT_FALSE(TraceMeRecorder::Active(level))) {
  + uint64 activity_id = TraceMeRecorder::NewActivityId();
  + TraceMeRecorder::Record({activity_id, name_generator(),
  + /*start_time=*/EnvTime::NowNanos(),
  + /*end_time=*/0});
  + return activity_id;
  + }
  +#endif
  + return kUntracedActivity;
  + }
  +
  // Record the start time of an activity.
  // Returns the activity ID, which is used to stop the activity.
  static uint64 ActivityStart(absl::string_view name, int level = 1) {
  @@ -207,6 +224,16 @@ class TraceMe {
  return kUntracedActivity;
  }
  + // Same as ActivityStart above, an overload for "const std::string&"
  + static uint64 ActivityStart(const std::string& name, int level = 1) {
  + return ActivityStart(absl::string_view(name), level);
  + }
  +
  + // Same as ActivityStart above, an overload for "const char*"
  + static uint64 ActivityStart(const char* name, int level = 1) {
  + return ActivityStart(absl::string_view(name), level);
  + }
  +
  // Record the end time of an activity started by ActivityStart().
  static void ActivityEnd(uint64 activity_id) {
  #if !defined(IS_MOBILE_PLATFORM)
  