Get rid of Plone's ReplaceableWrapper
=====================================

It has bitten us several times. It's ugly. It's evil. It's my fault :)

Why it's there
--------------

It started as a temporary hack to fix the lack of __browser_default__
back in the pre-Zope 2.6 ages. To be more precise, it was introduced
in rev. 1.48 of BaseRequest.py, and Zope 2.6 was branched on revision
1.50 of BaseRequest.py.

We are now in Zope 2.7, going to 2.8 so it's about time to get rid of
it.

Why that's not an easy task
---------------------------

- Remove the ReplaceableWrapper and run the tests, hell breaks
  loose. Many tests fail.

- Skinnable overrides __getattr__, so though the WebDAV operations
  take quite some care to not acquire doing this will result in a
  conflict with skin resources.

  - Effectively, what happens in Plone is that there's a
    FSPageTemplate in the skins that is named 'index_html'. This has
    been created (again) during the pre-Zope 2.6 era so Plone wouldn't
    break if you removed the root's 'index_html' document.

  - When you try to do a 'PUT' to index_html, even though it's not a
    object inside the Portal root, the FSPageTemplate is returned, and
    ends up raising MethodNotAllowed because obviously you can't 'PUT'
    to a FSPageTemplate.

  - This is like a timebomb waiting to explode. As soon as you try to
    upload a file to the Portal root which clashes with a skin object
    you will get a MethodNotAllowed.
