Good points. I think that people resort to URL based versioning and api keys in the url because they want to have it work from javascript/html, actionscript(flash)/silverlight clients without having to modify headers as much.
These points are great though and help make better restful apps.
Unfortunately, that's fairly heavy - and depends on Prototype for a lot of things (including class creation, etc). Unfortunately, Prototype's handling of object manipulation is extremely slow, especially when calling a base method: http://ajaxian.com/archives/javascript-inheritance-performan...
This is why I'm making this independent of other libraries. Implementing a nice interface to the mess that is XMLHttpRequest is not that difficult - and for what should be a tight, lightweight library, requiring something like Prototype is overkill.
These points are great though and help make better restful apps.