Implement atom, compare-and-set!, reset!, swap! and deref for atoms

MutableEntity is clever, but I couldn't think of a way to make it work without writing a java class. I focused instead on making the interface get and set which will make it easy to implement for all platforms.

The atom specific functions were pulled out into IAtom, which is covered by this pull request. Following this, IRef will need implemented, which will force the addition of metadata to atom and allow ref to be easily implemented.