Command autoloading feature

This PR actually mix with 3 stuffs.

  - Command autoloading feature
  - A bug fix when throwing an ExecuteMethodNotDefinedException
  - make ProgramName of an Application be its sufficient part of $argv[0] only

I can re-organize it if you want.
Remove this since it's an optional feature? for existing applications, they are using:

```
$this->command('foo', 'Foo\BarCommand');
$this->command('bar');
```

If we do this automatically, some disasters might happen:

1. command re-registered.
2. command not found. (some command class name does not map to what it should be as we expected)