I'm still quite new to Arduino but are people really using (object oriented) layers on top of the Arduino lingo?
I find that once you're working on a serious project you quickly need to optimize and tweak very low level core and library things (like the rx_buffer) to make sure your project fits in the atmega, both memory wise and io wise. Adding layers on top of Arduino would have as purpose to abstract Arduino technicalities. So this would thus complicate lowe level tweaking.
Yet, it's the serious projects that would benefit most from those more programmer-friendly layers...
So nice paradox you've got there
I'm for instance working on a project involving 12 tlc5940's, a max7219, interrupt based IR, an RTC, 1-wire temperature sensor and some buttons.... Any tweak you can do then on interrupts, timers and memory used by yourself, by core arduino and by the libraries you use is then not only nice but vital.