Create a new attribute. If the attribute already exists, it will raise a warning (use FindOrCreateAttribute if this usecase can arise) If the attribute already exists but is of the wrong type, it will fail and return nullptr. Same if the name is invalid. Return a typed attribute pointer, of the requested type T.