Fix issue 140: pragma keep doesn't keep duplicates

The removal of duplicates is now countered by recording the included FileEntry
of all include lines marked "IWYU pragma: keep", and then marking all includes
of said FileEntry as desired.

We think that if the user goes to the trouble of marking an include line with
the keep pragma, they can probably explicitly remove additional includes of
that header manually if they're not wanted.

git-svn-id: http://include-what-you-use.googlecode.com/svn/trunk@586 812d1f90-f944-d88a-411a-122bdc93e1ea