Reimplementation of `utils._force_rmtree()`
The existing utility is there to ensure we don't fail to remove a directory we know we want to remove.
This functionality is duplicated in Element._stage_sources_at().
This should be fixed, pinging @jmacarthur as he was the author of the added duplicated code path.
Snip from IRC
<tristan> jmac, while reviewing jonathanmaw_'s patch, I stumbled upon make_dir_writeable() in Element._stage_sources_at()
<tristan> jmac, Why is that reimplementing utils._force_rmtree() ?
<tristan> jmac, or rather, can you please fix that to ensure that _force_rmtree() works for the case that make_dir_writable() needs, and remove the dual codepaths ?
<jmac> I'll take a look tristan
<jmac> tristan: Looks like an efficiency improvement, since make_dir_writable doesn't need to do os.walk or use chmod unless there's an error. I'll see if it's possible to do the same in _force_rmtree and combine them.
<tristan> jmac, whichever works better; it appears that both code blocks serve pretty much the same purpose, so we shouldnt have two