Make generic code for printing prompt parts

Alsa fixes stashes output which did not work.

I did some cleaning up, we could optimize the code further if we have a convention for the naming of the functions. Then the prompt part function could look-up the information itself.

It would be like this, have to make sure the other commands (excluding stashed) returns correct status though:
```sh
set nr_of_dirty_files (__fish_git_prompt_part dirty)
set nr_of_dirty_files (__fish_git_prompt_part stashed)

function __fish_git_prompt_part --description "Out put prompt parts"
	set -l key $argv[1]
	set -l color __git_prompt_color_$key
	set -l char __git_prompt_char_$key
	set -l func '__fish_git_'$name'files'
	set -l os

	set -l result (eval $func; set os $status)
	if test $os -eq 0
		return
	end

	echo -n $$color
	echo -n $$char
	echo -n $result
	set_color normal
end
```