I know there are a couple of these out there, but I made my own for a university project. I have since been improving the library and keeping it running with the latest versions of the Arduino IDE.
It supports all of the different versions of the screen that I have come across - so far there are >10 known working types.
That is one of the major issues with a couple of the libraries I have seen for this screen as there is such a variation in the controllers used, with no way to really tell short of guessing. But I have written a much more comprehensive initialise call to allow the user to tune to the correct screen.
It also has a user settable origin which means that the displayed image can be centred on the screen - in some cases with the other libraries, there would be missing lines on one side, and a blank section on the other as the screens are aligned in the frame differently.
There is also an high speed mode which tries to get as much out of the screen in terms of frame rate as possible - granted as it is a serial display, this isn't very high, but it does allow an increase of ~5x the speed over the non high speed mode.
Included are two examples which explain in detail how each function works.
The library has a github page here (with each version available as a download):https://github.com/TCWORLD/gLCD-Library
As so far it has had over a hundred downloads and I have been getting good feedback from it when I have suggested the library to people, I figured it would be good to post it here (perhaps even on the playground, though someone would have to tell me how to do that).
I understand there is currently a library called gLCD for a differents type of screen which could get confusing. If that is the case, then it would be possible to rename my library to something like 'NokiaLCD' or some such variation.