Shred: Add recursion operations [PATCH]

Hi,
I'm not sure if this was discussed before, but I've got tired from having to
work around the lack of native recursion within `shred`. So, attached is a patch
to add recursion, including documentation.
Let me know if there's anything that needs to be modified further. I've compiled
and tested shred, so far everything works perfectly.
Have a great day,
--
Amr Ali