parse

Parses argv against spec.

Throws

if --help or -h is present.

if --version is present and CommandSpec.version is set.

if the input is invalid.

if spec itself is malformed.