Draper.undecorate safely undecorates any object

This allows you to pass any object to `Draper.undecorate` knowing you will get the original object back
even if the object passed in does is not already decorated.

Closes #600