fixes #174 by converting arguments before checking against choices

We used to check the argument against the specified `choices` sequence before we converted it. This meant that arguments were always strings when compared to the `choices` dict, which led to having to do weird things like

```
parser.add_argument('foo', type='int', choices=['10', '20'])
```

This pull let's you do

```
parser.add_argument('foo', type='int', choices=[10, 20])
```

The change is that the choices list is the correct type.