Implements subcommands enumeration

Invoking cargo with new "--list" option now shows list of installed subcommands. (see #270)

p.s.
The code is less functional-style than I'd like it to be. Please let me know if there are smarter ways to write them.
This could just be inserted as 

```rust
if flags.flag_list {
   ...
   return Ok(None)
}
```

to avoid having to reindent everything else.