cli: Add a new CLI wrapper

This new CLI wrapper introduces a command mode, like we are used from
Git for instance. The first argument specifies the command mode, which
is `memory` for the classic flashprog CLI. Alternatively to a first
argument, it can be called as `flashprog-cmd`. This will allow us to
add more CLI features that can be developed independently from the
classic CLI.

For instance, flashprog could then be called like this:

  $ flashprog memory -p ch341a_spi
  $ flashprog mem -p ch341a_spi

If no command mode is specified, we fall back to the classic CLI for
convenience. So this is also still possible:

  $ flashprog -p ch341a_spi

Change-Id: I98cb110b47ebce52daf2e0972fc4565ef9d40242
Signed-off-by: Nico Huber <nico.h@gmx.de>
diff --git a/meson.build b/meson.build
index ddb705a..e8dd525 100644
--- a/meson.build
+++ b/meson.build
@@ -605,6 +605,7 @@
   executable(
     'flashprog',
     files(
+      'cli.c',
       'cli_classic.c',
       'cli_common.c',
       'cli_output.c',