Properly add new commands to usage message.
Correctly parse command line options.

I accidentally forgot to change the argc check to the new value, so it rejected a lot of commands straight out.
Fixing this uncovered a bug in checking the value of type due to an over complex boolean expression, which was fixed.
Rewrite decimation into a loop so it can be performed "block by block".

Previously we just did it all as one big block, but this is obviously not how it will be performed on the board.