Added utility to uniquely identify ghc repo states
Added utility to uniquely identify ghc repo states

This commit adds fingerprint.py python script that can be used to
create and restore "fingerprints" of a ghc repo configuration. A
fingerprint is a list of (sub-repo, commit) pairs. It can be used in
place of git submodules to record and reinstate the entire commit
state of the git repos used by ghc.

vikraman/ghc,green-haskell/ghc,da-x/ghc,hferreiro/replay,gridaphobe/ghc,tjakway/ghcjvm,sdiehl/ghc,gcampax/ghc,GaloisInc/halvm-ghc,ezyang/ghc,vikraman/ghc,sgillespie/ghc,bitemyapp/ghc,oldmanmike/ghc,christiaanb/ghc,tjakway/ghcjvm,lukexi/ghc-7.8-arm64,tibbe/ghc,siddhanathan/ghc,oldmanmike/ghc,da-x/ghc,olsner/ghc,sgillespie/ghc,mcmaniac/ghc,vTurbine/ghc,lukexi/ghc,elieux/ghc,forked-upstream-packages-for-ghcjs/ghc,ml9951/ghc,AlexanderPankiv/ghc,urbanslug/ghc,gcampax/ghc,acowley/ghc,siddhanathan/ghc,fmthoma/ghc,nkaretnikov/ghc,wxwxwwxxx/ghc,nushio3/ghc,frantisekfarka/ghc-dsi,GaloisInc/halvm-ghc,acowley/ghc,wxwxwwxxx/ghc,acowley/ghc,elieux/ghc,spacekitteh/smcghc,anton-dessiatov/ghc,nkaretnikov/ghc,fmthoma/ghc,mcschroeder/ghc,holzensp/ghc,nathyong/microghc-ghc,gcampax/ghc,tibbe/ghc,tibbe/ghc,sdiehl/ghc,sgillespie/ghc,gcampax/ghc,mfine/ghc,da-x/ghc,forked-upstream-packages-for-ghcjs/ghc,wxwxwwxxx/ghc,snoyberg/ghc,AlexanderPankiv/ghc,vikraman/ghc,AlexanderPankiv/ghc,vTurbine/ghc,mettekou/ghc,bitemyapp/ghc,nkaretnikov/ghc,mcschroeder/ghc,shlevy/ghc,shlevy/ghc,gridaphobe/ghc,mfine/ghc,mfine/ghc,ghc-android/ghc,ghc-android/ghc,olsner/ghc,fmthoma/ghc,mfine/ghc,ryantm/ghc,gridaphobe/ghc,mcschroeder/ghc,GaloisInc/halvm-ghc,anton-dessiatov/ghc,AlexanderPankiv/ghc,nomeata/ghc,nathyong/microghc-ghc,vTurbine/ghc,tibbe/ghc,ml9951/ghc,ilyasergey/GHC-XAppFix,acowley/ghc,forked-upstream-packages-for-ghcjs/ghc,urbanslug/ghc,lukexi/ghc-7.8-arm64,hferreiro/replay,ryantm/ghc,nkaretnikov/ghc,siddhanathan/ghc,lukexi/ghc-7.8-arm64,nathyong/microghc-ghc,mcmaniac/ghc,ml9951/ghc,vikraman/ghc,snoyberg/ghc,sdiehl/ghc,jstolarek/ghc,shlevy/ghc,forked-upstream-packages-for-ghcjs/ghc,GaloisInc/halvm-ghc,green-haskell/ghc,sdiehl/ghc,lukexi/ghc,olsner/ghc,TomMD/ghc,siddhanathan/ghc,sgillespie/ghc,mettekou/ghc,snoyberg/ghc,mcschroeder/ghc,nomeata/ghc,acowley/ghc,hferreiro/replay,ekmett/ghc,shlevy/ghc,ryantm/ghc,shlevy/ghc,acowley/ghc,acowley/ghc,nushio3/ghc,TomMD/ghc,olsner/ghc,christiaanb/ghc,lukexi/ghc-7.8-arm64,TomMD/ghc,tjakway/ghcjvm,oldmanmike/ghc,anton-dessiatov/ghc,nushio3/ghc,tjakway/ghcjvm,mettekou/ghc,jstolarek/ghc,ryantm/ghc,AlexanderPankiv/ghc,snoyberg/ghc,ghc-android/ghc,vTurbine/ghc,da-x/ghc,mettekou/ghc,lukexi/ghc-7.8-arm64,ml9951/ghc,green-haskell/ghc,wxwxwwxxx/ghc,green-haskell/ghc,sdiehl/ghc,ezyang/ghc,spacekitteh/smcghc,ekmett/ghc,oldmanmike/ghc,spacekitteh/smcghc,ezyang/ghc,nushio3/ghc,GaloisInc/halvm-ghc,oldmanmike/ghc,forked-upstream-packages-for-ghcjs/ghc,vTurbine/ghc,elieux/ghc,elieux/ghc,ilyasergey/GHC-XAppFix,holzensp/ghc,wxwxwwxxx/ghc,da-x/ghc,mcmaniac/ghc,ekmett/ghc,forked-upstream-packages-for-ghcjs/ghc,vikraman/ghc,gridaphobe/ghc,ml9951/ghc,hferreiro/replay,AlexanderPankiv/ghc,mfine/ghc,siddhanathan/ghc,mcschroeder/ghc,frantisekfarka/ghc-dsi,ekmett/ghc,bitemyapp/ghc,TomMD/ghc,forked-upstream-packages-for-ghcjs/ghc,TomMD/ghc,mfine/ghc,oldmanmike/ghc,frantisekfarka/ghc-dsi,gcampax/ghc,frantisekfarka/ghc-dsi,TomMD/ghc,tjakway/ghcjvm,siddhanathan/ghc,ghc-android/ghc,lukexi/ghc,holzensp/ghc,ml9951/ghc,nomeata/ghc,shlevy/ghc,olsner/ghc,bitemyapp/ghc,fmthoma/ghc,oldmanmike/ghc,ryantm/ghc,olsner/ghc,christiaanb/ghc,christiaanb/ghc,bitemyapp/ghc,gcampax/ghc,nomeata/ghc,hferreiro/replay,nushio3/ghc,mettekou/ghc,tibbe/ghc,christiaanb/ghc,GaloisInc/halvm-ghc,ml9951/ghc,ml9951/ghc,christiaanb/ghc,snoyberg/ghc,nathyong/microghc-ghc,sdiehl/ghc,fmthoma/ghc,fmthoma/ghc,gridaphobe/ghc,anton-dessiatov/ghc,fmthoma/ghc,da-x/ghc,urbanslug/ghc,vTurbine/ghc,GaloisInc/halvm-ghc,christiaanb/ghc,holzensp/ghc,nathyong/microghc-ghc,wxwxwwxxx/ghc,vikraman/ghc,wxwxwwxxx/ghc,snoyberg/ghc,TomMD/ghc,ezyang/ghc,AlexanderPankiv/ghc,nathyong/microghc-ghc,mcmaniac/ghc,nkaretnikov/ghc,nkaretnikov/ghc,sgillespie/ghc,spacekitteh/smcghc,elieux/ghc,mettekou/ghc,holzensp/ghc,jstolarek/ghc,snoyberg/ghc,ghc-android/ghc,anton-dessiatov/ghc,tjakway/ghcjvm,sgillespie/ghc,shlevy/ghc,ezyang/ghc,mcmaniac/ghc,lukexi/ghc,hferreiro/replay,nkaretnikov/ghc,gridaphobe/ghc,nomeata/ghc,nathyong/microghc-ghc,nushio3/ghc,vTurbine/ghc,urbanslug/ghc,da-x/ghc,gcampax/ghc,siddhanathan/ghc,jstolarek/ghc,lukexi/ghc,tjakway/ghcjvm,ezyang/ghc,sdiehl/ghc,mfine/ghc,spacekitteh/smcghc,green-haskell/ghc,elieux/ghc,gridaphobe/ghc,olsner/ghc,hferreiro/replay,mettekou/ghc,elieux/ghc,urbanslug/ghc,ekmett/ghc,ilyasergey/GHC-XAppFix,ghc-android/ghc,ilyasergey/GHC-XAppFix,urbanslug/ghc,anton-dessiatov/ghc,mcschroeder/ghc,mcschroeder/ghc,frantisekfarka/ghc-dsi,nushio3/ghc,ezyang/ghc,sgillespie/ghc,ghc-android/ghc,urbanslug/ghc,vikraman/ghc,jstolarek/ghc,anton-dessiatov/ghc