To change the pin mapping in the adafruit library code is fairly simply.
You will see the hard coded pin mappings in their LiquidCrystal() constructor code
Just change them to match your wiring.
The pin mapping for the LiquidTWI library is totally hard coded in the actual code and
doesn't use defines - just raw bit twiddling code.
It requires totally re-writing the code in the send() function of the LiquidTWI.cpp module.
The AdaFruit library is DOG slow.
This is because it is emulating the digitalRead()/digitalWrite() interface across the i2c bus.
While interesting, it is slow because it does a full i2c access and write for each bit/pin.
The LiquidTWI library will be quite a bit faster as it writes all 8 bits at once.
The IIC interface class code I wrote is around twice as fast as LiquidTWI library because
I run the MCP23008 in a more efficient mode and an top of that I manage the i2c bus more efficiently.
This table tells the full story:
Interface ByteXfer 16x2FPS Ftime
4BIT 338uS 86.92 11.51ms (orignal Liquid Crystal)
adafruit 4000uS 7.35 136.02ms (Adafruit mcp23008 lib,i2c mode)
LiquidTWI 1340uS 21.95 45.57ms (LiquidTWI lib v1.5.1)
4BIT 98uS 298.58 3.35ms
SR2W 76uS 388.62 2.57ms
SR_2W 72uS 406.90 2.46ms (SR in 2 wire mode)
SR_3W 61uS 480.03 2.08ms (SR in 3 wire mode)
SR3W 102uS 287.92 3.47ms
I2C 957uS 30.74 32.25ms (pcf8574 @ 100kbit/sec)
IIC pcf8574 544uS 54.03 18.51ms (pcf8574 @ 100kbit/sec)
IIC mcp23008 645uS 45.62 21.92ms (mcp23008 @ 100kbit/sec)
The ByteXfer column is how long it takes to transfer each byte to the LCD.
The 16x2 FPS column is the number of times per second a 16x2 display could be updated
The Ftime column is how long each full 16x2 frame takes to update.
i.e. how long it takes to fully update a 16x2 LCD display.
You can see how fast each interface is with each library.
When using a mcp23008:
IIC mcp23008: 645us
So you can see the IIC interface class code I wrote is considerably faster than the other two libraries
and allows fully configuration of the pin wiring.
Some other considerations, the other libraries don't provide full compatibility
with the LiquidCrystal library. This means that when you change libraries or interfaces
you will need to go in an tweak your sketch code.
Say you change to using a different i2c backpack like one with a PCF8574 or switch to 4bit mode, or use a shift register.
with fm's library you simply change the constructor, and are done. No sketch code tweaks will be
necessary. With the others, it isn't quite so simple.
Things get really sticky with the Adafruit library if you are wanting to use other LiquidCrystal
compatible libraries as its doesn't really play nice with other libraries.
So say you go get a PCF8574 based backpack, then depending on which library you use,
you may have to uninstall the Adafruit library. (i.e. fm's library and Adafruit cannot coexist)
fms' library is the only library has configurable pin wiring.
This is the reason I tell people not to mess with the other libraries and to use fm's library.
In your case, at least right now, it is a bit special in that you are needing mcp23008 support
and fm's currently released library doesn't support that chip.
So I'd recommend 1 of two things:
1) to patch Adafruits library (it is pretty easy as I showed above)
2) pm me for some unreleased code for fm's library
I go with option #2 but keep in mind it is unreleased code and the final
release may break your existing sketch code if you update to the newer library.