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.
This isn't about the method `CommandBase::autoloadCommand($path);`. This is about reusing the object.

An application might integrate commands from several components. e.g. our web framework integrates commands from `AssetKit`, `LazyRecord`, and there will be multiple path to load commands.

However I think this is a future work, so making the class simple as possible will be better for us (A loosely coupled class should move the state variable as much as possible) 

And changing the interface in the later version would break the compatibility. 

Hence the goals are:

1. Avoid backward compatibility issue as much as we can.
2. Move the state variable or one-time variable out to make the class loosely coupled.
3. Allow the same autoloader object loads commands from multiple paths (keep for future)