Handle ignore files.

This commit tries to handle ignore files like git does.  GPatternSpec is
used to match a pattern that is saved in 'ignore.txt' file.  In the mean
time, should_ignore() signature is changed to support to handle ignore
file.

Now every time we want to handle ignore files, we will read 'ignore.txt'
file to fetch latest ignore file list.