Meaningful prepare returns
This release adds a requested feature from #116
- If a "prepare" callable returns an object of the same type as the prepared instance that result will replace the original instance. This change simplifies working with immutable APIs where setter manipulation is not possible.