#3 is what I'm pushing for in the D7 database overhaul, within reason. How to
abstract everything without making the syntax insane or the performance
terrible is what I'm currently trying to wrap my head around. The biggest
problem is field type handling, which I want to keep away from module
developers but varies greatly depending on the database.