/// <summary>
 /// Requires a string is an email or empty
 /// </summary>
 /// <param name="val"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 public Contract <T> IsEmailOrEmpty(string val, string key) =>
 IsEmailOrEmpty(val, key, FluntErrorMessages.IsEmailOrEmptyErrorMessage(key));