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.
OK, after reconsider, I agree with that ``$path`` is not really that strong relevant with this class. So I'll decouple the property to just an method argument.

In the other hand, remove the ``$path`` from property won't make this class more *reusable*, since it's still heavily dependent on ``CommandBase``.

IMO, classes have different roles, or say, patterns. You can't make every class reusable, there must be some classes are tightly coupled to the working project, and cannot be reusable in other projects. I classify ``CommandAutoloader`` as this type of "project specific implementation providing class", since it's depending on class ``CommandBase``, which is tightly coupled to this project.

So users should depend on high-level interface, like ``CommandBase::autoloadCommand()``, and should not interact with implementation detail ``CommandAutoloader`` directly. Should be no backward compatibility issue unless we change the interface of ``CommandBase::autoloadCommand()``