Make sure collaborators don't somehow modify empty

![](http://i.cr3ation.co.uk/dl/s1/gif/2b2b34238cf8cc58e522c62cf6cd2bcb_pondefloor.gif)

There is a long story behind this, but the ultimate lesson is that Money.empty should either return a cloned or frozen object. If some collaborating class modifies the memoized 0 value, then every call to Money.empty in that thread will be compared to an altered version of 0. Leading to infinite craziness.