Consistently use the term "builtin" instead of "internal command"

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Call load_command_list() only when it is needed

This avoids list_commands_in_dir() being called when not needed which is
quite slow due to file I/O in order to list matching files in a directory.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Speed up is_git_command() by checking early for internal commands

Since 2dce956 is_git_command() is a bit slow as it does file I/O in the
call to list_commands_in_dir(). Avoid the file I/O by adding an early
check for builtins.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Move builtin-related implementations to a new builtin.c file

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>