LOL, well I like chicken more, as far as what came first, that would be a great question

Back to the design patterns, there are numerous design patterns out there and different design patterns are better for different situations. I understand why you might choose the singleton design pattern for your database class, and if its been working well for you I would say keep going with that. There is no "right" or "wrong" answer, sometimes it does come down to preferences too. If speed is the only thing you are basing the answer on, then there may be a right or wrong answer as to what design pattern might be the quickest. I would think the singleton design pattern might be good to prevent duplicate or numerous objects from being created that might use up memory or resources.
In my projects there are times that I have a script that needs to make more than one database connection, so a singleton design pattern is not used for my situation as I will often have a couple of objects that represent different databases and need both simultaneously.
For your last question, obviously the quote() is a very simple function that does its job, while prepare is much more complicated and also supports parameter markers. Again there is no right answer here, just depends on how much you want to do yourself, or if you want to use functions that handle quite a bit for you. For your situation and being backwards compatible though, you might just stick with the simple quote() function and do everything yourself as far as preparing any SQL statements. Then you would know exactly what is going on and would probably be easier to figure out how to do it and be backwards compatible at the same time.
Just my opinion

Ozzu Hosting - Want your website on a fast server like Ozzu?