improve error handling for arguments

if you pass an argument without `=` a nice usage output should be printed instead of a traceback.
One nitpick: could you make that a variable (L179) and raise `SystemExit(usage)` here and L180?