Introduce hidden options

Developers often use hidden options for internal purposes which they
do not wish to expose to end-users.
opening this up for subtypes to better control visibility
Massaged the contribution from @andrewgaul.

The hidden() switch that always hides it from the usage screen is pointless, as it can be trivially achieved by not writing any usage. I think the underlying issue the change was trying to address is that being able to show different subset of options is often useful. Such a use case can be already seen in ExampleMode.

In this change, I introduced a generalized version of ExampleMode called OptionHandlerFilter, which allows the caller to specify the subset of options. The printUsage method is extended to support this parameter, and in this way the caller can control the subset of options to print them.
Merge branch 'pull-20'

Conflicts:
	args4j/src/org/kohsuke/args4j/CmdLineParser.java
turns out I have a.b.c.d.COMPANY.COM

Changing this to something even less likely to exist, and adding "." in the end to avoid the search path.