### Elasticsearch Version

8.2

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Any

### Problem Description

The PluginInfo verification code in Elasticsearch ensures that plugins must match the Elasticsearch they are being installed into. However, if the plugin descriptor properties file contains an empty string, the Version.fromString call would simply return the latest Elasticsearch version.

The bug relates to the following code:

```
        final String esVersionString = propsMap.remove("elasticsearch.version");
        if (esVersionString == null) {
            throw new IllegalArgumentException("property [elasticsearch.version] is missing for plugin [" + name + "]");
        }
        final Version esVersion = Version.fromString(esVersionString);
```

Apart from checking esVersionString for null, we should also check for the String being empty, e.g `Strings.hasLength(esVersionString) == false`.

### Steps to Reproduce

- Take any Elasticsearch plugin from a version other than the current
 
- Manually edit the plugin-descriptor.properties file in the jar and set `elasticsearch.version=`

- Deploy the plugin in the latest version of Elasticsearch 

### Logs (if relevant)

_No response_
server/src/main/java/org/elasticsearch/plugins/PluginInfo.java
}
    /**
     * Whether or not the plugin has a native controller.
     *
     * @return {@code true} if the plugin has a native controller
     */
    public boolean hasNativeController() {
        return hasNativeController;
    }
    /**
     * Returns the type of this plugin. Can be "isolated" for regular sandboxed plugins, or "bootstrap"
     * for plugins that affect how Elasticsearch's JVM runs.
     *
     * @return the type of the plugin
     */
    public PluginType getType() {
        return type;
    }
    /**
     * Returns any additional JVM command-line options that this plugin adds. Only applies to
     * plugins whose <code>type</code> is "bootstrap".
     *
     * @return any additional JVM options.
     */
    public String getJavaOpts() {
        return javaOpts;
    }
    /**
     * Whether this plugin is subject to the Elastic License.
     */