Fix for design problem in ArrayFieldSetter

When having defaults the ArrayFieldSetter appends to the defaults which seems to be an unexpected behaviour:
```
@Option(name="-opt")
private String opts[] = new String[] {"def1", "def2", "def3"};
```
If you pass now 

```
-opt XXX
```

in the command line, you'll have as opts

```
def1 def2 def3 XXX
```

This seems to be a weird behaviour because the defaults can only grow and never change.

I changed this behaviour to drop the defaults with the first user command line option which is what I'd expect. There's also a test included that can be run against the old code showing the problem.

This change **could break** existing code, so I'm not so sure how to deal with it. I'd propose discussing this and if there's enough people agreeing including it in a big version jump.