Added comments
Rewrote "moveToMailbox" code to deal with some potential bugs

Basically if the server isn't in the same box as the message it causes
issues, so this switches to that box then back to where the server was.
Changed exception type
Lots more tests!