I'm planning to include a LiquidCrystal library in Arduino 0012. It will support both 4 and 8 bit modes (though is there any reason you'd want to use the 8-bit one?). The API mirrors the Wiring one (http://wiring.org.co/learning/libraries/LiquidCrystal/index.html) - using the same print() and println() functions as the Serial class. The code is at: Arduino Starter Kit kaufen [verschiedene Ausführungen]
The interface for the wiring lcd library is not as friendly as I would hope for the arduino. The init routine doesn't allow for fine enough control of the location of the data pins, and it does not have any way to set the number of lines on the display. Also it doesn't have any way to send arbitrary control codes (or any high level interface to the functions on the LCD)
I would think that the interface could look somewhat like this:
class LCD {
LCD(int numLines, int ePin, int rwPin, int rsPin, int d4Pin, int d5Pin, int d6Pin, int d7Pin);
LCD(int numLines, int ePin, int rwPin, int rsPin, int d0Pin, int d1Pin, int d2Pin, int d3Pin, int d4Pin, int d5Pin, int d6Pin, int d7Pin);
init();
clear();
enable();
disable()
cursorMode(int mode);
cursorTo(int row, int column);
commandWrite(int value);
// print() and println() functions as in serial
}
notice that which constructor you use will set either 4bit or 8bit mode
Another thing that we could do would be to make Serial, SoftwareSerial and LCD all inherit from a common base class. That way all the number printing routines and such would only have to be implemented once. This might cost space if only one of the 3 was used, but we might wave space when using 2 or more.