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

Signed-off-by: Garrett Wu <gwu@wibidata.com>