XD-953b: module options take2

Like https://github.com/spring-projects/spring-xd/pull/356, only different

Has support for the "simple" case with keys of the form
```
options.<module>.description (mandatory)
options.<module>.default (optional)
options.<module>.type (optional)
```

For the more complicated cases (profile activation, validation [TBC] and "private" options), one can implement a class, eg like so
```java
public class GemfireServerSinkModuleOptions implements ProfileNamesProvider {

	private String gemfireHost = "localhost";

	private int gemfirePort = 40404;

        ...

	@ModuleOption("hostname of a single gemfire host to target")
	public void setGemfireHost(String gemfireHost) {
		this.gemfireHost = gemfireHost;
	}


        ...

	@Override
	public String[] profilesToActivate() {
		if (locatorHost != null) {
			return new String[] { "use-locator" };
		}
		else {
			return new String[] { "use-server" };
		}
	}
}

```




Note that "type" is now used for documentation purposes only, there is no actual typing computation done.

Cherry-picked the module info command from other PR

Pending issues (to be addressed in another PR?):
- [x] complex case
- [x] default values for complex case, when option is not surfaced back to the module (eg "suffix" in our canonical example)
- [ ] plugin provided options and values
- [ ] descriptive defaults instead of actual defaults (e.g. \<use stream name\>)
- [ ] JSR303 Validation