Collection flags.

- ability to parse flags specified multiple times (eg. for lists or maps).
 - default behavior allows overriding flags; system property to disallow overriding.
 - add parser for List<String> and Map<String, String>
 - add property 'required' to @Flag annotation