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 match may be better structured (less indentation) as:

```rust
let entries = match readdir(dir) {
    Ok(entries) => entries,
    Err(..) => continue,
};
...
```